]> granicus.if.org Git - php/commitdiff
Fixed memory leak
authorXinchen Hui <laruence@php.net>
Fri, 20 Jun 2014 05:27:56 +0000 (13:27 +0800)
committerXinchen Hui <laruence@php.net>
Fri, 20 Jun 2014 05:27:56 +0000 (13:27 +0800)
ext/mysqlnd/mysqlnd_ps.c
ext/pdo_mysql/mysql_statement.c

index b63886362162af6825f9f46552dfdad9476ca628..3885733fa26a77a64cc0b31110e1d01365b3b125 100644 (file)
@@ -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, &current_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);
                }
index 2c0fc853836a1f44a024aa7a9747e7a5007a3c82..29f608ea43206f1bc4c5b3f807df454f60a51a4e 100644 (file)
@@ -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);