summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xext/pdo/pdo_stmt.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index 8b263aba8c..e109eeafab 100755
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -529,11 +529,11 @@ static int do_fetch_common(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori,
static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value,
enum pdo_fetch_type how, enum pdo_fetch_orientation ori, long offset, zval *return_all TSRMLS_DC)
{
- enum pdo_fetch_type really_how = how;
zend_class_entry * ce;
- if (really_how == PDO_FETCH_USE_DEFAULT) {
- really_how = how = stmt->default_fetch_type;
+ how = how & ~PDO_FETCH_FLAGS;
+ if (how == PDO_FETCH_USE_DEFAULT) {
+ how = stmt->default_fetch_type;
}
if (!do_fetch_common(stmt, ori, offset, do_bind TSRMLS_CC)) {
@@ -805,7 +805,7 @@ static PHP_METHOD(PDOStatement, fetchSingle)
static PHP_METHOD(PDOStatement, fetchAll)
{
pdo_stmt_t *stmt = (pdo_stmt_t*)zend_object_store_get_object(getThis() TSRMLS_CC);
- long how = PDO_FETCH_USE_DEFAULT, flags;
+ long how = PDO_FETCH_USE_DEFAULT;
zval *data, *return_all;
char *class_name;
int class_name_len;
@@ -847,13 +847,11 @@ static PHP_METHOD(PDOStatement, fetchAll)
}
}
- flags = how & PDO_FETCH_FLAGS;
- how = how & ~PDO_FETCH_FLAGS;
if (!error)
{
PDO_STMT_CLEAR_ERR();
MAKE_STD_ZVAL(data);
- if (flags & PDO_FETCH_GROUP) {
+ if (how & PDO_FETCH_GROUP) {
array_init(return_value);
return_all = return_value;
} else {
@@ -867,7 +865,7 @@ static PHP_METHOD(PDOStatement, fetchAll)
}
}
if (!error) {
- if ((flags & PDO_FETCH_GROUP)) {
+ if ((how & PDO_FETCH_GROUP)) {
do {
MAKE_STD_ZVAL(data);
} while (do_fetch(stmt, TRUE, data, how, PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC));