Index: src/OFObject.m ================================================================== --- src/OFObject.m +++ src/OFObject.m @@ -92,10 +92,13 @@ - (void*)resizeMem: (void*)ptr toSize: (size_t)size { struct __ofobject_allocated_mem *iter; + if (ptr == NULL) + return [self getMemWithSize: size]; + for (iter = __mem_pool; iter != NULL; iter = iter->prev) { if (iter->ptr == ptr) { if ((ptr = realloc(iter->ptr, size)) == NULL) { [[OFNoMemException newWithObject: self andSize: size] raise]; Index: tests/OFObject/OFObject.m ================================================================== --- tests/OFObject/OFObject.m +++ tests/OFObject/OFObject.m @@ -83,12 +83,18 @@ puts("Allocating 1 byte..."); p = [obj getMemWithSize: 1]; puts("Trying to resize that 1 byte to more than possible..."); - CATCH_EXCEPTION(p = [obj resizeMem: p toSize: 4294967295U], + CATCH_EXCEPTION(p = [obj resizeMem: p + toSize: 4294967295U], OFNoMemException) + + puts("Trying to resize NULL to 1024 bytes..."); + p = [obj resizeMem: NULL + toSize: 1024]; + [obj freeMem: p]; /* TODO: Test if freeing object frees all memory */ return 0; }