From f6f15d69377288bfa75b8151921a0873c2932f6d Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Sun, 25 Oct 2015 17:13:14 +0000 Subject: [PATCH] Use tr_realloc (BSD reallocf-alike) instead of plain realloc --- libtransmission/bitfield.c | 1 - libtransmission/ptrarray.c | 1 - libtransmission/utils.c | 9 +++++++++ libtransmission/utils.h | 5 ++++- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libtransmission/bitfield.c b/libtransmission/bitfield.c index d69e08203..cbf7afaa8 100644 --- a/libtransmission/bitfield.c +++ b/libtransmission/bitfield.c @@ -8,7 +8,6 @@ */ #include -#include /* realloc () */ #include /* memset */ #include "transmission.h" diff --git a/libtransmission/ptrarray.c b/libtransmission/ptrarray.c index c3740c301..26e806fe8 100644 --- a/libtransmission/ptrarray.c +++ b/libtransmission/ptrarray.c @@ -8,7 +8,6 @@ */ #include -#include /* tr_renew () -> realloc () */ #include /* memmove */ #include "ptrarray.h" diff --git a/libtransmission/utils.c b/libtransmission/utils.c index ecab4a786..d9fccc42d 100644 --- a/libtransmission/utils.c +++ b/libtransmission/utils.c @@ -129,6 +129,15 @@ tr_malloc0 (size_t size) return size ? calloc (1, size) : NULL; } +void * +tr_realloc (void * p, size_t size) +{ + void * result = size != 0 ? realloc (p, size) : NULL; + if (result == NULL) + tr_free (p); + return result; +} + void tr_free (void * p) { diff --git a/libtransmission/utils.h b/libtransmission/utils.h index 70a8d4108..b0ec07f08 100644 --- a/libtransmission/utils.h +++ b/libtransmission/utils.h @@ -252,6 +252,9 @@ void* tr_malloc (size_t size); /** @brief Portability wrapper around calloc () in which `0' is a safe argument */ void* tr_malloc0 (size_t size); +/** @brief Portability wrapper around reallocf () in which `0' is a safe argument */ +void * tr_realloc (void * p, size_t size); + /** @brief Portability wrapper around free () in which `NULL' is a safe argument */ void tr_free (void * p); @@ -270,7 +273,7 @@ void* tr_memdup (const void * src, size_t byteCount); ((struct_type *) tr_malloc0 (sizeof (struct_type) * ((size_t)(n_structs)))) #define tr_renew(struct_type, mem, n_structs) \ - ((struct_type *) realloc ((mem), sizeof (struct_type) * ((size_t)(n_structs)))) + ((struct_type *) tr_realloc ((mem), sizeof (struct_type) * ((size_t)(n_structs)))) void* tr_valloc (size_t bufLen);