diff --git a/ChangeLog b/ChangeLog index 9f4f1c53a..4f03e3d3d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Tue Dec 21 13:27:00 1999 Richard Frith-Macdonald + + Fixes suggested by karl@nfox.com + * Source/propList.h: Bugfix parsing larger lists. + * Source/NSProcessInfo.m: Avoid use of freopen() + * Source/GSeq.h: for ranges not found, return NSNotFound as the + location rather than 0 - for compatibility with Apple. + * NSDeserializer.m: Return nil if given nil data or an object that + is not a data object. + 1999-12-19 David Lazaro * configure.in (objc_thread_lib): Added support for FreeBSD native diff --git a/Source/GSeq.h b/Source/GSeq.h index 403b2daa6..906b92cc5 100644 --- a/Source/GSeq.h +++ b/Source/GSeq.h @@ -552,7 +552,7 @@ GSEQ_STRRANGE(NSString *ss, NSString *os, unsigned mask, NSRange aRange) /* Ensure the string can be found */ strLength = GSEQ_OLEN; if (strLength > aRange.length || strLength == 0) - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; /* * Cache method implementations for getting characters and ranges @@ -606,7 +606,7 @@ GSEQ_STRRANGE(NSString *ss, NSString *os, unsigned mask, NSRange aRange) break; myIndex++; } - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; } case BCLS : @@ -641,7 +641,7 @@ GSEQ_STRRANGE(NSString *ss, NSString *os, unsigned mask, NSRange aRange) break; myIndex--; } - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; } case FLS : @@ -675,7 +675,7 @@ GSEQ_STRRANGE(NSString *ss, NSString *os, unsigned mask, NSRange aRange) break; myIndex++; } - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; } case BLS : @@ -709,7 +709,7 @@ GSEQ_STRRANGE(NSString *ss, NSString *os, unsigned mask, NSRange aRange) break; myIndex--; } - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; } case FCS : @@ -783,7 +783,7 @@ GSEQ_STRRANGE(NSString *ss, NSString *os, unsigned mask, NSRange aRange) break; } } - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; } case BCS : @@ -860,7 +860,7 @@ GSEQ_STRRANGE(NSString *ss, NSString *os, unsigned mask, NSRange aRange) myIndex--; } } - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; } case BS : @@ -930,7 +930,7 @@ GSEQ_STRRANGE(NSString *ss, NSString *os, unsigned mask, NSRange aRange) myIndex--; } } - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; } case FS : @@ -998,10 +998,10 @@ GSEQ_STRRANGE(NSString *ss, NSString *os, unsigned mask, NSRange aRange) break; } } - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; } } - return (NSRange){0, 0}; + return (NSRange){NSNotFound, 0}; } #undef GSEQ_STRRANGE #endif diff --git a/Source/NSProcessInfo.m b/Source/NSProcessInfo.m index 810d4b3a4..0e2769bcb 100644 --- a/Source/NSProcessInfo.m +++ b/Source/NSProcessInfo.m @@ -318,7 +318,9 @@ static char **_gnu_noobjc_env; if (_gnu_noobjc_argv == NULL) goto malloc_error; - freopen(proc_file_name, "r", ifp); + fclose(ifp); + ifp=fopen(proc_file_name,"r"); + //freopen(proc_file_name, "r", ifp); if (ifp == NULL) { free(_gnu_noobjc_argv); @@ -341,7 +343,9 @@ static char **_gnu_noobjc_env; length = 0; } } - freopen(proc_file_name, "r", ifp); + fclose(ifp); + ifp=fopen(proc_file_name,"r"); + //freopen(proc_file_name, "r", ifp); if (ifp == NULL) { for (c = 0; c < _gnu_noobjc_argc; c++) diff --git a/Source/NSSerializer.m b/Source/NSSerializer.m index 90c4e032e..90946dd27 100644 --- a/Source/NSSerializer.m +++ b/Source/NSSerializer.m @@ -723,7 +723,10 @@ deserializeFromInfo(_NSDeserializerInfo* info) _NSDeserializerInfo info; id o; - NSAssert(data != nil, NSInvalidArgumentException); + if (data == nil || [data isKindOfClass: [NSData class]] == NO) + { + return nil; + } NSAssert(cursor != 0, NSInvalidArgumentException); initDeserializerInfo(&info, data, cursor, flag); o = deserializeFromInfo(&info); @@ -738,7 +741,10 @@ deserializeFromInfo(_NSDeserializerInfo* info) unsigned int cursor = 0; id o; - NSAssert(data != nil, NSInvalidArgumentException); + if (data == nil || [data isKindOfClass: [NSData class]] == NO) + { + return nil; + } initDeserializerInfo(&info, data, &cursor, flag); o = deserializeFromInfo(&info); endDeserializerInfo(&info); @@ -750,7 +756,10 @@ deserializeFromInfo(_NSDeserializerInfo* info) length: (unsigned)length mutableContainers: (BOOL)flag { - NSAssert(data != nil, NSInvalidArgumentException); + if (data == nil || [data isKindOfClass: [NSData class]] == NO) + { + return nil; + } NSAssert(cursor != 0, NSInvalidArgumentException); if (length > [data length] - *cursor) { diff --git a/Source/propList.h b/Source/propList.h index 28da37f91..5ca4b53c3 100644 --- a/Source/propList.h +++ b/Source/propList.h @@ -520,7 +520,7 @@ static id parsePlItem(pldata* pld) byte |= char2num(pld->ptr[pld->pos]); pld->pos++; buf[len++] = byte; - if (len > sizeof(buf)) + if (len == sizeof(buf)) { [data appendBytes: buf length: len]; len = 0;