diff options
author | Andrey Hristov <andrey@php.net> | 2010-03-29 17:04:16 +0000 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2010-03-29 17:04:16 +0000 |
commit | 94cd357f5b4a2533510e382e08861269f57602e0 (patch) | |
tree | 65d0d2b969cd8f31eb6af1fbe908c9db965224f1 /ext/mysqlnd/mysqlnd_debug.c | |
parent | e99039d69269445ea7a786cff6086a314d301da0 (diff) | |
download | php-git-94cd357f5b4a2533510e382e08861269f57602e0.tar.gz |
Make it coupled - what is allocated with mnd_ should be freed
with mnd_ and vice versa.
Added mnd_pestrndup and mnd_pestrdup, which wrap the normal
calls to be able to track this calls.
Fixed some failing tests.
Diffstat (limited to 'ext/mysqlnd/mysqlnd_debug.c')
-rw-r--r-- | ext/mysqlnd/mysqlnd_debug.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/ext/mysqlnd/mysqlnd_debug.c b/ext/mysqlnd/mysqlnd_debug.c index 4ede83663f..1eedbdf00b 100644 --- a/ext/mysqlnd/mysqlnd_debug.c +++ b/ext/mysqlnd/mysqlnd_debug.c @@ -59,6 +59,8 @@ static const char mysqlnd_malloc_name[] = "_mysqlnd_malloc"; static const char mysqlnd_calloc_name[] = "_mysqlnd_calloc"; static const char mysqlnd_realloc_name[] = "_mysqlnd_realloc"; static const char mysqlnd_free_name[] = "_mysqlnd_free"; +static const char mysqlnd_pestrndup_name[] = "_mysqlnd_pestrndup"; +static const char mysqlnd_pestrdup_name[] = "_mysqlnd_pestrdup"; const char * mysqlnd_debug_std_no_trace_funcs[] = { @@ -74,6 +76,7 @@ const char * mysqlnd_debug_std_no_trace_funcs[] = mysqlnd_calloc_name, mysqlnd_realloc_name, mysqlnd_free_name, + mysqlnd_pestrndup_name, mysqlnd_read_header_name, mysqlnd_read_body_name, NULL /* must be always last */ @@ -916,6 +919,43 @@ void _mysqlnd_free(void *ptr MYSQLND_MEM_D) /* }}} */ +/* {{{ _mysqlnd_pestrndup */ +char * _mysqlnd_pestrndup(const char * const ptr, size_t length, zend_bool persistent MYSQLND_MEM_D) +{ + char * ret; + DBG_ENTER(mysqlnd_pestrndup_name); + DBG_INF_FMT("file=%-15s line=%4d", strrchr(__zend_filename, PHP_DIR_SEPARATOR) + 1, __zend_lineno); + DBG_INF_FMT("ptr=%p", ptr); + + ret = pestrndup(ptr, length, persistent); + + if (MYSQLND_G(collect_memory_statistics)) { + MYSQLND_INC_GLOBAL_STATISTIC(persistent? STAT_MEM_STRNDUP_COUNT : STAT_MEM_ESTRNDUP_COUNT); + } + + DBG_RETURN(ret); +} +/* }}} */ + + +/* {{{ _mysqlnd_pestrdup */ +char * _mysqlnd_pestrdup(const char * const ptr, zend_bool persistent MYSQLND_MEM_D) +{ + char * ret; + DBG_ENTER(mysqlnd_pestrdup_name); + DBG_INF_FMT("file=%-15s line=%4d", strrchr(__zend_filename, PHP_DIR_SEPARATOR) + 1, __zend_lineno); + DBG_INF_FMT("ptr=%p", ptr); + + ret = pestrdup(ptr, persistent); + + if (MYSQLND_G(collect_memory_statistics)) { + MYSQLND_INC_GLOBAL_STATISTIC(persistent? STAT_MEM_STRDUP_COUNT : STAT_MEM_ESTRDUP_COUNT); + } + + DBG_RETURN(ret); +} +/* }}} */ + /* Follows code borrowed from zend_builtin_functions.c because the functions there are static */ |