From fe151f15997c2130bf5f71c752a960de05a1bf6b Mon Sep 17 00:00:00 2001 From: Not Zed Date: Wed, 29 Nov 2000 10:29:56 +0000 Subject: Plug a memleak, need to free results from term_eval(). (term_eval_gt): 2000-11-29 Not Zed * e-sexp.c (term_eval_lt): Plug a memleak, need to free results from term_eval(). (term_eval_gt): (term_eval_eq): 2000-11-27 Not Zed * e-memory.c (e_mempool_new): Added some locking to global data. This should make the interfaces mt-safe, although each object is only per-thread safe. svn path=/trunk/; revision=6710 --- e-util/e-memory.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'e-util/e-memory.c') diff --git a/e-util/e-memory.c b/e-util/e-memory.c index e8e52fdb5c..1c3958b6f3 100644 --- a/e-util/e-memory.c +++ b/e-util/e-memory.c @@ -336,6 +336,9 @@ typedef struct _EMemPool { /* a pool of mempool header blocks */ static MemChunk *mempool_memchunk; +#ifdef G_THREADS_ENABLED +static GStaticMutex mempool_mutex = G_STATIC_MUTEX_INIT; +#endif /** * e_mempool_new: @@ -363,10 +366,16 @@ MemPool *e_mempool_new(int blocksize, int threshold, EMemPoolFlags flags) { MemPool *pool; +#ifdef G_THREADS_ENABLED + g_static_mutex_lock(&mempool_mutex); +#endif if (mempool_memchunk == NULL) { mempool_memchunk = e_memchunk_new(8, sizeof(MemPool)); } pool = e_memchunk_alloc(mempool_memchunk); +#ifdef G_THREADS_ENABLED + g_static_mutex_unlock(&mempool_mutex); +#endif if (threshold >= blocksize) threshold = blocksize * 2 / 3; pool->blocksize = blocksize; -- cgit