]> granicus.if.org Git - pgbouncer/commitdiff
force list header on free
authorMarko Kreen <markokr@gmail.com>
Wed, 23 Jan 2008 09:37:15 +0000 (09:37 +0000)
committerMarko Kreen <markokr@gmail.com>
Wed, 23 Jan 2008 09:37:15 +0000 (09:37 +0000)
src/slab.c

index b867f1d7b60a7301a5d955b2fc2030b289851fa6..c40fe025941a74a1c7559bbc9d5f7ae9b49167e4 100644 (file)
  * - On each release, cleaner is called.
  * - When giving object out, nothing is done.
  * - Writes List struct on obj header, expects it to be overwritten on use.
+ *
+ * TODO: fix list head at object:
+ * - set as policy that real object must have it too
+ * - or memset() / constructor policy on alloc
+ * - stop lazy constructor/destructor business as it only complicates,
+ *   call constructor on alloc, destructor on free
+ * - avoid destructor completely
  */
 
 #include <sys/param.h>
@@ -83,6 +90,8 @@ static void init_objcache(ObjectCache *cache,
                cache->final_size = ALIGN(obj_size);
        else
                cache->final_size = CUSTOM_ALIGN(obj_size, align);
+
+       log_noise("new cache: %s, size=%u", name, cache->final_size);
 }
 
 /* make new cache */
@@ -184,6 +193,7 @@ void obj_free(ObjectCache *cache, void *obj)
        List *item = obj;
        if (cache->clean_func)
                cache->clean_func(obj);
+       list_init(item); /* fixme: needs alloc policy too */
        statlist_prepend(item, &cache->freelist);
 }