fix php extention memory leak in PHP 7

pull/74/head
yuqing 2016-08-08 15:17:50 +08:00
parent 96036f5e2e
commit 8765998114
1 changed files with 12 additions and 2 deletions

View File

@ -2929,6 +2929,11 @@ static int php_fdfs_download_callback(void *arg, const int64_t file_size, \
zval ret; zval ret;
zval null_args; zval null_args;
int result; int result;
#if PHP_MAJOR_VERSION >= 7
zend_string *sz_data;
bool use_heap_data;
#endif
TSRMLS_FETCH(); TSRMLS_FETCH();
INIT_ZVAL(ret); INIT_ZVAL(ret);
@ -2937,11 +2942,12 @@ static int php_fdfs_download_callback(void *arg, const int64_t file_size, \
INIT_ZVAL(zfilesize); INIT_ZVAL(zfilesize);
ZVAL_LONG(&zfilesize, file_size); ZVAL_LONG(&zfilesize, file_size);
INIT_ZVAL(zdata);
#if PHP_MAJOR_VERSION < 7 #if PHP_MAJOR_VERSION < 7
INIT_ZVAL(zdata);
ZVAL_STRINGL(&zdata, (char *)data, current_size, 0); ZVAL_STRINGL(&zdata, (char *)data, current_size, 0);
#else #else
ZVAL_STRINGL(&zdata, (char *)data, current_size); ZSTR_ALLOCA_INIT(sz_data, (char *)data, current_size, use_heap_data);
ZVAL_NEW_STR(&zdata, sz_data);
#endif #endif
pCallback = (php_fdfs_callback_t *)arg; pCallback = (php_fdfs_callback_t *)arg;
@ -2980,6 +2986,10 @@ static int php_fdfs_download_callback(void *arg, const int64_t file_size, \
result = EINVAL; result = EINVAL;
} }
#if PHP_MAJOR_VERSION >= 7
ZSTR_ALLOCA_FREE(sz_data, use_heap_data);
#endif
return result; return result;
} }