mirror of
https://github.com/gnustep/libs-base.git
synced 2025-06-01 09:02:01 +00:00
fix error replacing strings in a string, and optimise literal strings a bit
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@34081 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
8870a4331f
commit
a4c7e88a11
3 changed files with 42 additions and 3 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,6 +1,14 @@
|
||||||
|
2011-10-28 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* Source/NSString.m: Fix bug when widening mutable string in
|
||||||
|
replaceOccurrencesOfString:...range:
|
||||||
|
* Source/GSString.m: more efficient check to see if a literal string
|
||||||
|
can be converted to ascii or latin1
|
||||||
|
|
||||||
2011-10-28 Fred Kiefer <FredKiefer@gmx.de>
|
2011-10-28 Fred Kiefer <FredKiefer@gmx.de>
|
||||||
|
|
||||||
* Tests/base/NSMutableString/basic.m: Add test for replaceOccurrencesOfString:...range:
|
* Tests/base/NSMutableString/basic.m: Add test for
|
||||||
|
replaceOccurrencesOfString:...range:
|
||||||
|
|
||||||
2011-10-27 Richard Frith-Macdonald <rfm@gnu.org>
|
2011-10-27 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
|
|
@ -4996,6 +4996,30 @@ nextUTF8(const uint8_t *p, unsigned l, unsigned *o, unichar *n)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL) canBeConvertedToEncoding: (NSStringEncoding)encoding
|
||||||
|
{
|
||||||
|
if (NSASCIIStringEncoding == encoding)
|
||||||
|
{
|
||||||
|
BOOL ascii;
|
||||||
|
|
||||||
|
lengthUTF8((const uint8_t*)nxcsptr, nxcslen, &ascii, 0);
|
||||||
|
return ascii;
|
||||||
|
}
|
||||||
|
else if (NSISOLatin1StringEncoding == encoding)
|
||||||
|
{
|
||||||
|
BOOL latin1;
|
||||||
|
|
||||||
|
lengthUTF8((const uint8_t*)nxcsptr, nxcslen, 0, &latin1);
|
||||||
|
return latin1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
id d = [self dataUsingEncoding: encoding allowLossyConversion: NO];
|
||||||
|
|
||||||
|
return d != nil ? YES : NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (NSData*) dataUsingEncoding: (NSStringEncoding)encoding
|
- (NSData*) dataUsingEncoding: (NSStringEncoding)encoding
|
||||||
allowLossyConversion: (BOOL)flag
|
allowLossyConversion: (BOOL)flag
|
||||||
{
|
{
|
||||||
|
|
|
@ -5524,8 +5524,15 @@ static NSFileManager *fm = nil;
|
||||||
searchRange.location = range.location + byLen;
|
searchRange.location = range.location + byLen;
|
||||||
searchRange.length = newEnd - searchRange.location;
|
searchRange.length = newEnd - searchRange.location;
|
||||||
}
|
}
|
||||||
|
if (searchRange.length > 0)
|
||||||
range = (*func)(self, replace, opts, searchRange);
|
{
|
||||||
|
/* We replaced something and now need to scan again.
|
||||||
|
* As we modified the receiver, we must refresh the
|
||||||
|
* method implementation for searching.
|
||||||
|
*/
|
||||||
|
func = GSPrivateRangeOfString(self, replace);
|
||||||
|
range = (*func)(self, replace, opts, searchRange);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
while (range.length > 0);
|
while (range.length > 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue