@@ -42,6 +42,7 @@ struct align_test {
42
42
/* Temporarily cast a void* var into a char* var when adding an offset (to
43
43
* keep some compilers from complaining about the pointer arithmetic). */
44
44
#define PTR_ADD (b ,o ) ( (void*) ((char*)(b) + (o)) )
45
+ #define PTR_SUB (b ,o ) ( (void*) ((char*)(b) - (o)) )
45
46
46
47
alloc_pool_t
47
48
pool_create (size_t size , size_t quantum , void (* bomb )(const char * , const char * , int ), int flags )
@@ -100,7 +101,7 @@ pool_destroy(alloc_pool_t p)
100
101
for (cur = pool -> extents ; cur ; cur = next ) {
101
102
next = cur -> next ;
102
103
if (pool -> flags & POOL_PREPEND )
103
- free (PTR_ADD (cur -> start , - sizeof (struct pool_extent )));
104
+ free (PTR_SUB (cur -> start , sizeof (struct pool_extent )));
104
105
else {
105
106
free (cur -> start );
106
107
free (cur );
@@ -235,7 +236,7 @@ pool_free(alloc_pool_t p, size_t len, void *addr)
235
236
if (cur -> free + cur -> bound >= pool -> size ) {
236
237
prev -> next = cur -> next ;
237
238
if (pool -> flags & POOL_PREPEND )
238
- free (PTR_ADD (cur -> start , - sizeof (struct pool_extent )));
239
+ free (PTR_SUB (cur -> start , sizeof (struct pool_extent )));
239
240
else {
240
241
free (cur -> start );
241
242
free (cur );
@@ -292,7 +293,7 @@ pool_free_old(alloc_pool_t p, void *addr)
292
293
while ((cur = next ) != NULL ) {
293
294
next = cur -> next ;
294
295
if (pool -> flags & POOL_PREPEND )
295
- free (PTR_ADD (cur -> start , - sizeof (struct pool_extent )));
296
+ free (PTR_SUB (cur -> start , sizeof (struct pool_extent )));
296
297
else {
297
298
free (cur -> start );
298
299
free (cur );
0 commit comments