andrey          Fri May 29 12:19:26 2009 UTC

  Modified files:              
    /php-src/ext/mysqlnd        mysqlnd_ps.c 
  Log:
  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.29&r2=1.30&diff_format=u
Index: php-src/ext/mysqlnd/mysqlnd_ps.c
diff -u php-src/ext/mysqlnd/mysqlnd_ps.c:1.29 
php-src/ext/mysqlnd/mysqlnd_ps.c:1.30
--- php-src/ext/mysqlnd/mysqlnd_ps.c:1.29       Thu May 28 17:47:18 2009
+++ php-src/ext/mysqlnd/mysqlnd_ps.c    Fri May 29 12:19:26 2009
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: mysqlnd_ps.c,v 1.29 2009/05/28 17:47:18 andrey Exp $ */
+/* $Id: mysqlnd_ps.c,v 1.30 2009/05/29 12:19:26 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

Reply via email to