diff --git a/ChangeLog b/ChangeLog index 199556c5f..7b0021741 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2014-01-07 Richard Frith-Macdonald + + * Source/NSObject.m: Fixed logic error in David's libobjc2 integration + for deallocation; should use object_getClass() if the object is NOT a + small object, use isa otherwise. + 2013-12-31 Marcus Mueller * Headers/Foundation/NSMetadata.h: use GS_PROTOCOLS_HAVE_OPTIONAL for diff --git a/Source/NSObject.m b/Source/NSObject.m index b4231be7e..4319644a0 100644 --- a/Source/NSObject.m +++ b/Source/NSObject.m @@ -1420,11 +1420,11 @@ static id gs_weak_load(id obj) #ifdef OBJC_SMALL_OBJECT_MASK if (((NSUInteger)self & OBJC_SMALL_OBJECT_MASK) == 0) { - destructorClass = object_getClass(self); + destructorClass = isa; // Potentially hidden class } else { - destructorClass = isa; + destructorClass = object_getClass(self); // Small object } #else destructorClass = isa; @@ -1450,7 +1450,7 @@ static id gs_weak_load(id obj) destructorClass = class_getSuperclass(destructorClass); if (newDestructor != destructor) - { + { newDestructor(self, cxx_destruct); destructor = newDestructor; }