andrey Fri May 29 12:19:40 2009 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/mysqlnd mysqlnd_ps.c Log: MFH:Fix for the failing mysql_stmt_execute() test. Data was cleaned after stmt_reset() but it should stay and be freed as later as next stmt_execute() http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_ps.c?r1=1.3.2.26&r2=1.3.2.27&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_ps.c diff -u php-src/ext/mysqlnd/mysqlnd_ps.c:1.3.2.26 php-src/ext/mysqlnd/mysqlnd_ps.c:1.3.2.27 --- php-src/ext/mysqlnd/mysqlnd_ps.c:1.3.2.26 Thu May 28 17:47:37 2009 +++ php-src/ext/mysqlnd/mysqlnd_ps.c Fri May 29 12:19:40 2009 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_ps.c,v 1.3.2.26 2009/05/28 17:47:37 andrey Exp $ */ +/* $Id: mysqlnd_ps.c,v 1.3.2.27 2009/05/29 12:19:40 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_wireprotocol.h" @@ -588,7 +588,7 @@ SET_ERROR_AFF_ROWS(stmt); SET_ERROR_AFF_ROWS(stmt->conn); - if (stmt->result && stmt->state > MYSQLND_STMT_PREPARED && stmt->field_count) { + if (stmt->result && stmt->state >= MYSQLND_STMT_PREPARED && stmt->field_count) { /* We don need to copy the data from the buffers which we will clean. Because it has already been copied. See @@ -1192,11 +1192,11 @@ stmt->result->m.skip_result(stmt->result TSRMLS_CC); } - /* Now the line should be free, if it wasn't */ - - DBG_INF("freeing result"); - /* free_result() doesn't actually free stmt->result but only the buffers */ - stmt->m->free_result(stmt TSRMLS_CC); + /* + Don't free now, let the result be usable. When the stmt will again be + executed then the result set will be cleaned, the bound variables will + be separated before that. + */ int4store(cmd_buf, stmt->stmt_id); if (CONN_GET_STATE(conn) == CONN_READY &&
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php