diff --git a/ChangeLog b/ChangeLog index 2839b1b31..eaa6160a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-07-22 Richard Frith-Macdonald + + * Source/NSConcreteHashTable.m: + * Source/NSConcreteMapTable.m: + Get instance size at run time, so we can compile using nonfragile-abi + 2015-07-16 Niels Grewe * Source/GSSet.m diff --git a/Source/NSConcreteHashTable.m b/Source/NSConcreteHashTable.m index d4f5eb6f6..74fd9f4e7 100644 --- a/Source/NSConcreteHashTable.m +++ b/Source/NSConcreteHashTable.m @@ -827,11 +827,14 @@ const NSHashTableCallBacks NSPointerToStructHashCallBacks = @implementation NSConcreteHashTable +static unsigned instanceSize = 0; + + (void) initialize { if (concreteClass == Nil) { concreteClass = [NSConcreteHashTable class]; + instanceSize = class_getInstanceSize(concreteClass); } #if GS_WITH_GC /* We create a typed memory descriptor for hash nodes. @@ -1084,7 +1087,7 @@ const NSHashTableCallBacks NSPointerToStructHashCallBacks = * } * GSIMapEndEnumerator(&enumerator); */ - size += GSIMapSize(self) - sizeof(GSI_MAP_TABLE_T); + size += GSIMapSize(self) - instanceSize; } return size; } diff --git a/Source/NSConcreteMapTable.m b/Source/NSConcreteMapTable.m index d44680f26..3feb37358 100644 --- a/Source/NSConcreteMapTable.m +++ b/Source/NSConcreteMapTable.m @@ -1185,11 +1185,14 @@ const NSMapTableValueCallBacks NSOwnedPointerMapValueCallBacks = @implementation NSConcreteMapTable +static unsigned instanceSize = 0; + + (void) initialize { if (concreteClass == Nil) { concreteClass = [NSConcreteMapTable class]; + instanceSize = class_getInstanceSize(concreteClass); } #if GS_WITH_GC /* We create a typed memory descriptor for map nodes. @@ -1450,7 +1453,7 @@ const NSMapTableValueCallBacks NSOwnedPointerMapValueCallBacks = * } * GSIMapEndEnumerator(&enumerator); */ - size += GSIMapSize(self) - sizeof(GSI_MAP_TABLE_T); + size += GSIMapSize(self) - instanceSize; } return size; }