Bugfix for GSI code management of stored items

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@12569 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2002-02-20 08:32:08 +00:00
parent b690be566c
commit c24c65b21e
4 changed files with 21 additions and 18 deletions

View file

@ -12,6 +12,9 @@
limit date even if no I/O is possible.
* Source/NSUserDefaults.m: Patch by Alexander Malmberg to try all
listed locales rather than giving up at first failure.
* Headers/gnustep/base/GSUnion.h: Enclose types bitmask in brackets
to avoid *all* types being included in the union! Should decrease
memory footprint and increase speed of many classes.
2002-02-13 Richard Frith-Macdonald <rfm@gnu.org>

View file

@ -57,51 +57,51 @@
#if defined(GSUNION) && defined(GSUNION_TYPES)
typedef union {
#if (GSUNION_TYPES & GSUNION_OBJ)
#if ((GSUNION_TYPES) & GSUNION_OBJ)
id obj;
NSObject *nso;
#endif
#if (GSUNION_TYPES & GSUNION_CLS)
#if ((GSUNION_TYPES) & GSUNION_CLS)
Class cls;
#endif
#if (GSUNION_TYPES & GSUNION_SEL)
#if ((GSUNION_TYPES) & GSUNION_SEL)
SEL sel;
#endif
#if (GSUNION_TYPES & GSUNION_CHAR)
#if ((GSUNION_TYPES) & GSUNION_CHAR)
char schr;
unsigned char uchr;
#endif
#if (GSUNION_TYPES & GSUNION_SHORT)
#if ((GSUNION_TYPES) & GSUNION_SHORT)
short ssht;
unsigned short usht;
#endif
#if (GSUNION_TYPES & GSUNION_INT)
#if ((GSUNION_TYPES) & GSUNION_INT)
int sint;
unsigned uint;
#endif
#if (GSUNION_TYPES & GSUNION_LONG)
#if ((GSUNION_TYPES) & GSUNION_LONG)
long slng;
unsigned long ulng;
#endif
#if (GSUNION_TYPES & GSUNION_PTR)
#if ((GSUNION_TYPES) & GSUNION_PTR)
void *ptr;
const void *cptr;
char *str;
const char *cstr;
#endif
#if (GSUNION_TYPES & GSUNION_8B)
#if ((GSUNION_TYPES) & GSUNION_8B)
gss8 s8;
gsu8 u8;
#endif
#if (GSUNION_TYPES & GSUNION_16B)
#if ((GSUNION_TYPES) & GSUNION_16B)
gss16 s16;
gsu16 u16;
#endif
#if (GSUNION_TYPES & GSUNION_32B)
#if ((GSUNION_TYPES) & GSUNION_32B)
gss32 s32;
gsu32 u32;
#endif
#if (GSUNION_TYPES & GSUNION_64B)
#if ((GSUNION_TYPES) & GSUNION_64B)
gss64 s64;
gsu64 u64;
#endif

View file

@ -64,7 +64,7 @@
*/
#define GSI_ARRAY_RETAIN(A, X)
#define GSI_ARRAY_RELEASE(A, X)
#define GSI_ARRAY_TYPES GSUNION_OBJ|GSUNION_SEL|GSUNION_STR
#define GSI_ARRAY_TYPES GSUNION_OBJ|GSUNION_SEL|GSUNION_PTR
#include <base/GSIArray.h>
@ -1803,7 +1803,7 @@ static IMP _xRefImp; /* Serialize a crossref. */
}
GSIArrayAddItem(_clsAry, (GSIArrayItem)nil);
GSIArrayAddItem(_objAry, (GSIArrayItem)nil);
GSIArrayAddItem(_ptrAry, (GSIArrayItem)0);
GSIArrayAddItem(_ptrAry, (GSIArrayItem)(void*)0);
}
NS_HANDLER
{

View file

@ -36,7 +36,7 @@
*/
#define GSI_ARRAY_RETAIN(A, X)
#define GSI_ARRAY_RELEASE(A, X)
#define GSI_ARRAY_TYPES GSUNION_OBJ|GSUNION_SEL|GSUNION_STR
#define GSI_ARRAY_TYPES GSUNION_OBJ|GSUNION_SEL|GSUNION_PTR
#include <base/GSIArray.h>
@ -1191,15 +1191,15 @@ static Class NSDataMallocClass;
*/
clsMap = NSZoneMalloc(zone, sizeof(GSIArray_t)*3);
GSIArrayInitWithZoneAndCapacity(clsMap, zone, sizeC);
GSIArrayAddItem(clsMap, (GSIArrayItem)0);
GSIArrayAddItem(clsMap, (GSIArrayItem)(void*)0);
objMap = &clsMap[1];
GSIArrayInitWithZoneAndCapacity(objMap, zone, sizeO);
GSIArrayAddItem(objMap, (GSIArrayItem)0);
GSIArrayAddItem(objMap, (GSIArrayItem)(void*)0);
ptrMap = &clsMap[2];
GSIArrayInitWithZoneAndCapacity(ptrMap, zone, sizeP);
GSIArrayAddItem(ptrMap, (GSIArrayItem)0);
GSIArrayAddItem(ptrMap, (GSIArrayItem)(void*)0);
}
else
{