mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-23 00:41:02 +00:00
fixups to pass regression tests again
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@38555 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
9a50324a56
commit
bda48774ca
3 changed files with 36 additions and 25 deletions
|
@ -9,6 +9,8 @@
|
|||
|
||||
* GSString.m: Fix sign extension bug
|
||||
* Source/NSXMLParser.m: Update to more exactly match OSX behavior
|
||||
* Source/NSDateFormatter.m: attempt to fix functionality broken
|
||||
by additional call to set date format during reset.
|
||||
|
||||
2015-05-25 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
|
|
|
@ -115,7 +115,8 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
[self _resetUDateFormat];
|
||||
|
||||
/* According to Apple docs, default behavior is NSDateFormatterBehavior10_4 on
|
||||
10.5 and later. Yeah, go figure. */
|
||||
* 10.5 and later. Yeah, go figure.
|
||||
*/
|
||||
#if GS_USE_ICU == 1
|
||||
{
|
||||
int length;
|
||||
|
@ -351,7 +352,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
int32_t pPos = 0;
|
||||
|
||||
textLength = [string length];
|
||||
text = NSZoneMalloc ([self zone], sizeof(UChar) * textLength);
|
||||
text = malloc(sizeof(UChar) * textLength);
|
||||
if (text == NULL)
|
||||
return nil;
|
||||
|
||||
|
@ -362,7 +363,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
result =
|
||||
[NSDate dateWithTimeIntervalSince1970: (NSTimeInterval)(date / 1000.0)];
|
||||
|
||||
NSZoneFree ([self zone], text);
|
||||
free(text);
|
||||
return result;
|
||||
#else
|
||||
return nil;
|
||||
|
@ -375,17 +376,16 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
NSString *result;
|
||||
int32_t length;
|
||||
unichar *string;
|
||||
NSZone *z = [self zone];
|
||||
UDate udate = [date timeIntervalSince1970] * 1000.0;
|
||||
UErrorCode err = U_ZERO_ERROR;
|
||||
|
||||
length = udat_format (internal->_formatter, udate, NULL, 0, NULL, &err);
|
||||
string = NSZoneMalloc (z, sizeof(UChar) * (length + 1));
|
||||
string = malloc(sizeof(UChar) * (length + 1));
|
||||
err = U_ZERO_ERROR;
|
||||
udat_format (internal->_formatter, udate, string, length, NULL, &err);
|
||||
if (U_SUCCESS(err))
|
||||
{
|
||||
result = AUTORELEASE([[NSString allocWithZone: z]
|
||||
result = AUTORELEASE([[NSString allocWithZone: NSDefaultMallocZone()]
|
||||
initWithBytesNoCopy: string
|
||||
length: length * sizeof(UChar)
|
||||
encoding: NSUnicodeStringEncoding
|
||||
|
@ -393,7 +393,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
return result;
|
||||
}
|
||||
|
||||
NSZoneFree (z, string);
|
||||
free(string);
|
||||
return nil;
|
||||
#else
|
||||
return nil;
|
||||
|
@ -415,12 +415,12 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
int32_t patternLength;
|
||||
|
||||
patternLength = [string length];
|
||||
pattern = NSZoneMalloc ([self zone], sizeof(UChar) * patternLength);
|
||||
pattern = malloc(sizeof(UChar) * patternLength);
|
||||
[string getCharacters: pattern range: NSMakeRange(0, patternLength)];
|
||||
|
||||
udat_applyPattern (internal->_formatter, 0, pattern, patternLength);
|
||||
|
||||
NSZoneFree ([self zone], pattern);
|
||||
free(pattern);
|
||||
#endif
|
||||
ASSIGNCOPY(_dateFormat, string);
|
||||
}
|
||||
|
@ -965,7 +965,9 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
- (void) _resetUDateFormat
|
||||
{
|
||||
#if GS_USE_ICU == 1
|
||||
UChar *pat;
|
||||
UChar *tzID;
|
||||
int32_t patLength;
|
||||
int32_t tzIDLength;
|
||||
UErrorCode err = U_ZERO_ERROR;
|
||||
|
||||
|
@ -973,25 +975,32 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
udat_close (internal->_formatter);
|
||||
|
||||
tzIDLength = [[internal->_tz name] length];
|
||||
tzID = NSZoneMalloc ([self zone], sizeof(UChar) * tzIDLength);
|
||||
[[internal->_tz name] getCharacters: tzID range: NSMakeRange (0, tzIDLength)];
|
||||
tzID = malloc(sizeof(UChar) * tzIDLength);
|
||||
[[internal->_tz name] getCharacters: tzID];
|
||||
|
||||
if (nil == self->_dateFormat)
|
||||
{
|
||||
patLength = 0;
|
||||
pat = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
patLength = [self->_dateFormat length];
|
||||
pat = malloc(sizeof(UChar) * patLength);
|
||||
[self->_dateFormat getCharacters: pat];
|
||||
}
|
||||
internal->_formatter = udat_open (NSToUDateFormatStyle(internal->_timeStyle),
|
||||
NSToUDateFormatStyle(internal->_dateStyle),
|
||||
[[internal->_locale localeIdentifier] UTF8String],
|
||||
tzID,
|
||||
tzIDLength,
|
||||
NULL,
|
||||
0,
|
||||
pat,
|
||||
patLength,
|
||||
&err);
|
||||
if (U_FAILURE(err))
|
||||
internal->_formatter = NULL;
|
||||
if (nil != self->_dateFormat)
|
||||
{
|
||||
// Set the date format to the user provide one
|
||||
[self setDateFormat: _dateFormat];
|
||||
}
|
||||
NSZoneFree ([self zone], tzID);
|
||||
if (0 != pat) free(pat);
|
||||
free(tzID);
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
|
@ -1014,12 +1023,10 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
NSString *string = [array objectAtIndex: idx];
|
||||
|
||||
length = [string length];
|
||||
value = NSZoneMalloc ([self zone], sizeof(unichar) * length);
|
||||
value = malloc(sizeof(unichar) * length);
|
||||
[string getCharacters: value range: NSMakeRange(0, length)];
|
||||
|
||||
udat_setSymbols (internal->_formatter, symbol, idx, value, length, &err);
|
||||
|
||||
NSZoneFree ([self zone], value);
|
||||
free(value);
|
||||
|
||||
++idx;
|
||||
}
|
||||
|
@ -1051,12 +1058,13 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
|||
udat_getSymbols (internal->_formatter, symbol, idx, value, length, &err);
|
||||
if (U_SUCCESS(err))
|
||||
{
|
||||
str = AUTORELEASE([[NSString allocWithZone: z]
|
||||
str = [[NSString allocWithZone: z]
|
||||
initWithBytesNoCopy: value
|
||||
length: length * sizeof(unichar)
|
||||
encoding: NSUnicodeStringEncoding
|
||||
freeWhenDone: YES]);
|
||||
freeWhenDone: YES];
|
||||
[mArray addObject: str];
|
||||
RELEASE(str);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#import <Foundation/NSCalendar.h>
|
||||
#import <Foundation/NSDate.h>
|
||||
#import <Foundation/NSDateFormatter.h>
|
||||
#import <Foundation/NSDictionary.h>
|
||||
#import <Foundation/NSLocale.h>
|
||||
#import <Foundation/NSTimeZone.h>
|
||||
#import "Testing.h"
|
||||
|
|
Loading…
Reference in a new issue