Differences From Artifact [a774c5de86]:
- File
src/OFObject.m
— part of check-in
[e959fed010]
at
2009-04-26 12:44:20
on branch trunk
— A few renames in OFObject.
getMemWithSize: -> allocWithSize:
getMemForNItems:ofSize: -> allocNItems:withSize:
resizeMem:toNItems:ofSize: -> resizeMem:toNItems:withSize: (user: js, size: 8225) [annotate] [blame] [check-ins using]
To Artifact [a14dce520b]:
- File
src/OFObject.m
— part of check-in
[042a74a6e6]
at
2009-05-03 14:48:41
on branch trunk
— Don't throw an OFNoMemException in - freeMem:. It won't help anyway.
If there's not even enough memory to make the list of memchunks
smaller, there can't be much done anyway. The only way is to ignore
it and hope the whole object gets free'd soon, as the memchunk will
be free'd then as well.Additionally, the OFOutOfRangeException was replaced by an assert. It
should never overflow here as we're making it smaller. And a size of 0
can't happen as we already found the memchunk before. (user: js, size: 8105) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
10 11 12 13 14 15 16 17 18 19 20 21 22 23 | */ #import "config.h" #include <stdlib.h> #include <string.h> #include <limits.h> #import "OFObject.h" #import "OFAutoreleasePool.h" #import "OFExceptions.h" #import "OFMacros.h" #import <objc/objc-api.h> | > | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | */ #import "config.h" #include <stdlib.h> #include <string.h> #include <limits.h> #include <assert.h> #import "OFObject.h" #import "OFAutoreleasePool.h" #import "OFExceptions.h" #import "OFMacros.h" #import <objc/objc-api.h> |
︙ | ︙ | |||
322 323 324 325 326 327 328 | while (iter-- > PRE_IVAR->memchunks) { i--; if (OF_UNLIKELY(*iter == ptr)) { memchunks_size = PRE_IVAR->memchunks_size - 1; last = PRE_IVAR->memchunks[memchunks_size]; | | | < < | < < | 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 | while (iter-- > PRE_IVAR->memchunks) { i--; if (OF_UNLIKELY(*iter == ptr)) { memchunks_size = PRE_IVAR->memchunks_size - 1; last = PRE_IVAR->memchunks[memchunks_size]; assert(PRE_IVAR->memchunks_size != 0 && memchunks_size <= SIZE_MAX / sizeof(void*)); if (OF_UNLIKELY(memchunks_size == 0)) { free(ptr); free(PRE_IVAR->memchunks); PRE_IVAR->memchunks = NULL; PRE_IVAR->memchunks_size = 0; return self; } if (OF_UNLIKELY((memchunks = realloc( PRE_IVAR->memchunks, memchunks_size * sizeof(void*))) == NULL)) return self; free(ptr); PRE_IVAR->memchunks = memchunks; PRE_IVAR->memchunks[i] = last; PRE_IVAR->memchunks_size = memchunks_size; return self; |
︙ | ︙ |