com php-src: Fixed memory leak: ext/mysqlnd/mysqlnd_ps.c ext/pdo_mysql/mysql_statement.c
| From: | Xinchen Hui | Date: | Fri, 20 Jun 2014 05:27:56 +0000 |
| Subject: | com php-src: Fixed memory leak: ext/mysqlnd/mysqlnd_ps.c ext/pdo_mysql/mysql_statement.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-78994@lists.php.net to get a copy of this message | ||
Commit: d632870e4dfe506e21ddd4275351e7244060c942
Author: Xinchen Hui <laruence@php.net> Fri, 20 Jun 2014 13:27:56 +0800
Parents: e091a91f4337f79c4314b18706dfd277ce1c01fc
Branches: phpng
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d632870e4dfe506e21ddd4275351e7244060c942
Log:
Fixed memory leak
Changed paths:
M ext/mysqlnd/mysqlnd_ps.c
M ext/pdo_mysql/mysql_statement.c
Diff:
diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c
index b638863..3885733 100644
--- a/ext/mysqlnd/mysqlnd_ps.c
+++ b/ext/mysqlnd/mysqlnd_ps.c
@@ -650,7 +650,7 @@ MYSQLND_METHOD(mysqlnd_stmt, execute)(MYSQLND_STMT * const s TSRMLS_DC)
if (stmt->result_bind[i].bound == TRUE) {
zval *result = &stmt->result_bind[i].zv;
ZVAL_DEREF(result);
- zval_copy_ctor(result);
+ Z_TRY_ADDREF_P(result);
}
}
}
@@ -809,7 +809,7 @@ mysqlnd_stmt_fetch_row_buffered(MYSQLND_RES * result, void * param, unsigned int
ZVAL_COPY_VALUE(result, ¤t_row[i]);
#ifndef WE_DONT_COPY_IN_BUFFERED_AND_UNBUFFERED_BECAUSEOF_IS_REF
- zval_copy_ctor(result);
+ Z_TRY_ADDREF_P(result);
#endif
} else {
ZVAL_NULL(result);
@@ -2031,7 +2031,7 @@ mysqlnd_stmt_separate_result_bind(MYSQLND_STMT * const s TSRMLS_DC)
*/
if (Z_REFCOUNTED(stmt->result_bind[i].zv) && Z_REFCOUNT(stmt->result_bind[i].zv)
> 1) {
#ifdef WE_DONT_COPY_IN_BUFFERED_AND_UNBUFFERED_BECAUSEOF_IS_REF
- zval_copy_ctor(&stmt->result_bind[i].zv);
+ Z_TRY_ADDREF_P(&stmt->result_bind[i].zv);
#endif
zval_ptr_dtor(&stmt->result_bind[i].zv);
} else {
@@ -2041,7 +2041,7 @@ mysqlnd_stmt_separate_result_bind(MYSQLND_STMT * const s TSRMLS_DC)
which the user has lost reference.
*/
#ifdef WE_DONT_COPY_IN_BUFFERED_AND_UNBUFFERED_BECAUSEOF_IS_REF
- ZVAL_NULL(&stmt->result_bind[i].zv);
+ //??? ZVAL_NULL(&stmt->result_bind[i].zv);
#endif
zval_ptr_dtor(&stmt->result_bind[i].zv);
}
@@ -2086,7 +2086,7 @@ mysqlnd_stmt_separate_one_result_bind(MYSQLND_STMT * const s, unsigned int
param
*/
if (Z_REFCOUNTED(stmt->result_bind[param_no].zv) &&
Z_REFCOUNT(stmt->result_bind[param_no].zv) > 1) {
#ifdef WE_DONT_COPY_IN_BUFFERED_AND_UNBUFFERED_BECAUSEOF_IS_REF
- zval_copy_ctor(&stmt->result_bind[param_no].zv);
+ Z_TRY_ADDREF_P(&stmt->result_bind[param_no].zv);
#endif
zval_ptr_dtor(&stmt->result_bind[param_no].zv);
} else {
@@ -2096,7 +2096,7 @@ mysqlnd_stmt_separate_one_result_bind(MYSQLND_STMT * const s, unsigned int
param
which the user has lost reference.
*/
#ifdef WE_DONT_COPY_IN_BUFFERED_AND_UNBUFFERED_BECAUSEOF_IS_REF
- ZVAL_NULL(&stmt->result_bind[param_no].zv);
+ //???ZVAL_NULL(&stmt->result_bind[param_no].zv);
#endif
zval_ptr_dtor(&stmt->result_bind[param_no].zv);
}
diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c
index 2c0fc85..29f608e 100644
--- a/ext/pdo_mysql/mysql_statement.c
+++ b/ext/pdo_mysql/mysql_statement.c
@@ -746,7 +746,7 @@ static int pdo_mysql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsig
}
#if PDO_USE_MYSQLND
if (S->stmt) {
- Z_TRY_ADDREF(S->stmt->data->result_bind[colno].zv);
+ //??? Z_TRY_ADDREF(S->stmt->data->result_bind[colno].zv);
*ptr = (char*)&S->stmt->data->result_bind[colno].zv;
*len = sizeof(zval);
PDO_DBG_RETURN(1);