]> git.ipfire.org Git - thirdparty/rsync.git/commitdiff
Introduce PTR_SUB
authorRose <83477269+AtariDreams@users.noreply.github.com>
Wed, 3 May 2023 13:52:18 +0000 (09:52 -0400)
committerWayne Davison <wayne@opencoder.net>
Wed, 20 Nov 2024 05:33:30 +0000 (21:33 -0800)
This is more intuitive than adding a negative number.

lib/pool_alloc.c

index bc1cc1a6bbab39b675c97613907e41c6959448a8..b49e3a7bdbfe72449b68c800f3b39b23560753bc 100644 (file)
@@ -42,6 +42,7 @@ struct align_test {
 /* Temporarily cast a void* var into a char* var when adding an offset (to
  * keep some compilers from complaining about the pointer arithmetic). */
 #define PTR_ADD(b,o)   ( (void*) ((char*)(b) + (o)) )
+#define PTR_SUB(b,o)   ( (void*) ((char*)(b) - (o)) )
 
 alloc_pool_t
 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)
        for (cur = pool->extents; cur; cur = next) {
                next = cur->next;
                if (pool->flags & POOL_PREPEND)
-                       free(PTR_ADD(cur->start, -sizeof (struct pool_extent)));
+                       free(PTR_SUB(cur->start, sizeof (struct pool_extent)));
                else {
                        free(cur->start);
                        free(cur);
@@ -235,7 +236,7 @@ pool_free(alloc_pool_t p, size_t len, void *addr)
                if (cur->free + cur->bound >= pool->size) {
                        prev->next = cur->next;
                        if (pool->flags & POOL_PREPEND)
-                               free(PTR_ADD(cur->start, -sizeof (struct pool_extent)));
+                               free(PTR_SUB(cur->start, sizeof (struct pool_extent)));
                        else {
                                free(cur->start);
                                free(cur);
@@ -292,7 +293,7 @@ pool_free_old(alloc_pool_t p, void *addr)
        while ((cur = next) != NULL) {
                next = cur->next;
                if (pool->flags & POOL_PREPEND)
-                       free(PTR_ADD(cur->start, -sizeof (struct pool_extent)));
+                       free(PTR_SUB(cur->start, sizeof (struct pool_extent)));
                else {
                        free(cur->start);
                        free(cur);