cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_pgsql pgsql_statement.c

From: Date: Tue, 28 Nov 2006 16:28:07 +0000
Subject: cvs: php-src /ext/pdo pdo_stmt.c /ext/pdo_pgsql pgsql_statement.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-41761@lists.php.net to get a copy of this message
iliaa Tue Nov 28 16:28:07 2006 UTC Modified files: /php-src/ext/pdo pdo_stmt.c /php-src/ext/pdo_pgsql pgsql_statement.c Log: MFB: Fixed bug #39656 (crash when calling fetch() on a PDO statment object after closeCursor()). http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.167&r2=1.168&diff_format=u Index: php-src/ext/pdo/pdo_stmt.c diff -u php-src/ext/pdo/pdo_stmt.c:1.167 php-src/ext/pdo/pdo_stmt.c:1.168 --- php-src/ext/pdo/pdo_stmt.c:1.167 Tue Nov 7 17:57:37 2006 +++ php-src/ext/pdo/pdo_stmt.c Tue Nov 28 16:28:07 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_stmt.c,v 1.167 2006/11/07 17:57:37 iliaa Exp $ */ +/* $Id: pdo_stmt.c,v 1.168 2006/11/28 16:28:07 iliaa Exp $ */ /* The PDO Statement Handle Class */ @@ -434,7 +434,7 @@ if (!stmt->executed) { /* this is the first execute */ - if (stmt->dbh->alloc_own_columns) { + if (stmt->dbh->alloc_own_columns && !stmt->columns) { /* for "big boy" drivers, we need to allocate memory to fetch * the results into, so lets do that now */ ret = pdo_stmt_describe_columns(stmt TSRMLS_CC); @@ -565,6 +565,10 @@ static int do_fetch_common(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori, long offset, int do_bind TSRMLS_DC) /* {{{ */ { + if (!stmt->executed) { + return 0; + } + if (!dispatch_param_event(stmt, PDO_PARAM_EVT_FETCH_PRE TSRMLS_CC)) { return 0; } @@ -1888,6 +1892,7 @@ } } while (1); + stmt->executed = 0; RETURN_TRUE; } @@ -1897,7 +1902,7 @@ PDO_HANDLE_STMT_ERR(); RETURN_FALSE; } - + stmt->executed = 0; RETURN_TRUE; } /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_pgsql/pgsql_statement.c?r1=1.41&r2=1.42&diff_format=u Index: php-src/ext/pdo_pgsql/pgsql_statement.c diff -u php-src/ext/pdo_pgsql/pgsql_statement.c:1.41 php-src/ext/pdo_pgsql/pgsql_statement.c:1.42 --- php-src/ext/pdo_pgsql/pgsql_statement.c:1.41 Thu Nov 16 17:34:42 2006 +++ php-src/ext/pdo_pgsql/pgsql_statement.c Tue Nov 28 16:28:07 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pgsql_statement.c,v 1.41 2006/11/16 17:34:42 iliaa Exp $ */ +/* $Id: pgsql_statement.c,v 1.42 2006/11/28 16:28:07 iliaa Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -140,7 +140,7 @@ return 0; } - if(!stmt->executed) { + if (!stmt->executed && !stmt->column_count) { stmt->column_count = (int) PQnfields(S->result); S->cols = ecalloc(stmt->column_count, sizeof(pdo_pgsql_column)); }

« previous php.cvs (#41761) next »