From 12feb6e7b8f64c7ba99dad621dd152f7ebb40b8c Mon Sep 17 00:00:00 2001 From: Christian Thaeter Date: Thu, 7 Aug 2008 05:40:26 +0200 Subject: [PATCH] add 'lumiera_free' as replacement for 'free' lumiera_free() is for now just a static inline wraper around free() Later this makes it easier to hook in some resource managing functions or a Garbage Collector in. Replaced all current uses of free() --- src/backend/file.c | 4 ++-- src/backend/filedescriptor.c | 2 +- src/backend/filehandlecache.c | 2 +- src/lib/mrucache.c | 7 ++++--- src/lib/safeclib.c | 9 +++++---- src/lib/safeclib.h | 12 ++++++++++++ 6 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/backend/file.c b/src/backend/file.c index 9af608567..2b1929d6c 100644 --- a/src/backend/file.c +++ b/src/backend/file.c @@ -50,7 +50,7 @@ lumiera_file_destroy (LumieraFile self) { TRACE (file); lumiera_filedescriptor_release (self->descriptor); - free ((void*)self->name); + lumiera_free ((void*)self->name); return self; } @@ -67,7 +67,7 @@ void lumiera_file_delete (LumieraFile self) { TRACE (file); - free (lumiera_file_destroy (self)); + lumiera_free (lumiera_file_destroy (self)); } diff --git a/src/backend/filedescriptor.c b/src/backend/filedescriptor.c index b9608984f..005bc425b 100644 --- a/src/backend/filedescriptor.c +++ b/src/backend/filedescriptor.c @@ -234,7 +234,7 @@ lumiera_filedescriptor_delete (LumieraFiledescriptor self) TODO ("release filehandle"); lumiera_mutex_destroy (&self->lock); - free (self); + lumiera_free (self); lumiera_mutexacquirer_unlock (®istry_lock); } diff --git a/src/backend/filehandlecache.c b/src/backend/filehandlecache.c index 181807661..0a4852879 100644 --- a/src/backend/filehandlecache.c +++ b/src/backend/filehandlecache.c @@ -58,7 +58,7 @@ lumiera_filehandlecache_delete (void) RESOURCE_FORGET (filehandlecache, lumiera_fhcache->rh); lumiera_mrucache_destroy (&lumiera_fhcache->cache); lumiera_mutex_destroy (&lumiera_fhcache->lock); - free (lumiera_fhcache); + lumiera_free (lumiera_fhcache); lumiera_fhcache = NULL; } } diff --git a/src/lib/mrucache.c b/src/lib/mrucache.c index 0f9bb86df..d591d5f56 100644 --- a/src/lib/mrucache.c +++ b/src/lib/mrucache.c @@ -19,6 +19,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "lib/safeclib.h" #include "lib/mrucache.h" @@ -39,9 +40,9 @@ lumiera_mrucache_destroy (LumieraMruCache self) { llist_unlink (node); if (self->destructor_cb) - free (self->destructor_cb (node)); + lumiera_free (self->destructor_cb (node)); else - free (node); + lumiera_free (node); } self->cached = 0; return self; @@ -52,7 +53,7 @@ lumiera_mrucache_age (LumieraMruCache self, int nelem) { REQUIRE (self); while (self->cached && nelem--) - free (lumiera_mrucache_pop (self)); + lumiera_free (lumiera_mrucache_pop (self)); return nelem; } diff --git a/src/lib/safeclib.c b/src/lib/safeclib.c index c7c4f6e10..3d1468627 100644 --- a/src/lib/safeclib.c +++ b/src/lib/safeclib.c @@ -18,7 +18,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include "error.h" +#include "lib/error.h" +#include "lib/safeclib.h" #include #include @@ -114,8 +115,8 @@ lumiera_tmpbuf_freeall (void) { pthread_setspecific (lumiera_tmpbuf_tls_key, NULL); for (int idx = 0; idx < 64; ++idx) - free (buf->buffers[idx]); - free (buf); + lumiera_free (buf->buffers[idx]); + lumiera_free (buf); } } @@ -133,7 +134,7 @@ lumiera_tmpbuf_provide (size_t size) if (buf->sizes[buf->idx] < size || buf->sizes[buf->idx] > 8*size) { - free (buf->buffers[buf->idx]); + lumiera_free (buf->buffers[buf->idx]); buf->sizes[buf->idx] = (size+4*sizeof(long)) & ~(4*sizeof(long)-1); buf->buffers[buf->idx] = lumiera_malloc (buf->sizes[buf->idx]); } diff --git a/src/lib/safeclib.h b/src/lib/safeclib.h index 793bd1368..2cd95502d 100644 --- a/src/lib/safeclib.h +++ b/src/lib/safeclib.h @@ -50,6 +50,18 @@ void* lumiera_calloc (size_t n, size_t size); +/** + * Free previously allocated memory. + * @param mem pointer to the memory block obtained by lumiera_malloc or lumiera_calloc + */ +static inline void +lumiera_free (void* mem) +{ + /* for now only a alias, might change in future */ + free (mem); +} + + /** * Duplicate a C string. * always succeeds or dies