summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2009-06-16 07:53:35 +0000
committerAndrey Hristov <andrey@php.net>2009-06-16 07:53:35 +0000
commita2acaa7fcd5407f4a2fcf067069b0d5d82d8e5a6 (patch)
treeedf2055a4552de0fb637cf8158845913c09e58ab
parentc353601a3f99b2bc072fa967e9ae79b4cd69bb05 (diff)
downloadphp-git-a2acaa7fcd5407f4a2fcf067069b0d5d82d8e5a6.tar.gz
MFH:
Use Zend's allocator instead of libc's and also don't try to work on zvals that are NULLs.
-rw-r--r--ext/mysqlnd/mysqlnd_palloc.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/ext/mysqlnd/mysqlnd_palloc.c b/ext/mysqlnd/mysqlnd_palloc.c
index eeaedd18f8..4691639f91 100644
--- a/ext/mysqlnd/mysqlnd_palloc.c
+++ b/ext/mysqlnd/mysqlnd_palloc.c
@@ -139,7 +139,7 @@ void _mysqlnd_palloc_free_cache(MYSQLND_ZVAL_PCACHE *cache TSRMLS_DC)
/* {{{ _mysqlnd_palloc_init_thd_cache */
MYSQLND_THD_ZVAL_PCACHE* mysqlnd_palloc_init_thd_cache(MYSQLND_ZVAL_PCACHE * const cache TSRMLS_DC)
{
- MYSQLND_THD_ZVAL_PCACHE *ret = calloc(1, sizeof(MYSQLND_THD_ZVAL_PCACHE));
+ MYSQLND_THD_ZVAL_PCACHE *ret = mnd_ecalloc(1, sizeof(MYSQLND_THD_ZVAL_PCACHE));
DBG_ENTER("_mysqlnd_palloc_init_thd_cache");
DBG_INF_FMT("ret = %p", ret);
@@ -161,7 +161,7 @@ MYSQLND_THD_ZVAL_PCACHE* mysqlnd_palloc_init_thd_cache(MYSQLND_ZVAL_PCACHE * con
ret->references = 1;
/* 1. Initialize the GC list */
- ret->gc_list.ptr_line = calloc(cache->max_items, sizeof(mysqlnd_zval *));
+ ret->gc_list.ptr_line = mnd_ecalloc(cache->max_items, sizeof(mysqlnd_zval *));
/* Backward and forward looping is possible */
ret->gc_list.last_added = ret->gc_list.ptr_line;
ret->gc_list.canary1 = (void*)0xCAFE;
@@ -233,8 +233,8 @@ void mysqlnd_palloc_free_thd_cache(MYSQLND_THD_ZVAL_PCACHE *thd_cache TSRMLS_DC)
UNLOCK_PCACHE(global_cache);
}
- mnd_free(thd_cache->gc_list.ptr_line);
- mnd_free(thd_cache);
+ mnd_efree(thd_cache->gc_list.ptr_line);
+ mnd_efree(thd_cache);
DBG_VOID_RETURN;
}
@@ -413,6 +413,9 @@ void mysqlnd_palloc_zval_ptr_dtor(zval **zv, MYSQLND_THD_ZVAL_PCACHE * const thd
{
MYSQLND_ZVAL_PCACHE *cache;
DBG_ENTER("mysqlnd_palloc_zval_ptr_dtor");
+ if (!*zv) {
+ DBG_VOID_RETURN;
+ }
if (thd_cache) {
DBG_INF_FMT("cache=%p parent_block=%p last_in_block=%p *zv=%p refc=%d type=%d ",
thd_cache,