summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2006-11-13 22:10:37 +0000
committerIlia Alshanetsky <iliaa@php.net>2006-11-13 22:10:37 +0000
commitb28cbe8b6f46e77a36f9e582495cf8d77b8a9cd7 (patch)
tree2196e9ed1e560aa93867e93947ca78b70cb1c7a1
parent923b785fd163533b4dd0ec5935411db6f3b4131a (diff)
downloadphp-git-b28cbe8b6f46e77a36f9e582495cf8d77b8a9cd7.tar.gz
Fixed bug #36812 (pg_execute() modifies input array).
-rw-r--r--NEWS1
-rw-r--r--ext/pgsql/pgsql.c7
2 files changed, 5 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 3c930dc56e..513aa3f11e 100644
--- a/NEWS
+++ b/NEWS
@@ -75,6 +75,7 @@ PHP NEWS
- Fixed bug #38456 (Apache2 segfaults when virtual() is called in .php
ErrorDocument). (Ilia)
- Fixed bug #36975 (natcasesort() causes array_pop() to misbehave). (Hannes)
+- Fixed bug #36812 (pg_execute() modifies input array). (Ilia)
- Fixed bug #36644 (possible crash in variant_date_from_timestamp()). (Ilia)
- Fixed bug #33282 (Re-assignment by reference does not clear the is_ref flag)
(Ilia,Dmitry, Matt Wilmas)
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index 7f069e2d06..0a6c772407 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -1472,6 +1472,7 @@ PHP_FUNCTION(pg_execute)
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Found results on this connection. Use pg_get_result() to get these results first");
}
+ SEPARATE_ZVAL(pv_param_arr);
zend_hash_internal_pointer_reset(Z_ARRVAL_PP(pv_param_arr));
num_params = zend_hash_num_elements(Z_ARRVAL_PP(pv_param_arr));
if (num_params > 0) {
@@ -1486,7 +1487,8 @@ PHP_FUNCTION(pg_execute)
}
otype = (*tmp)->type;
- convert_to_string(*tmp);
+ SEPARATE_ZVAL(tmp);
+ convert_to_string_ex(tmp);
if (Z_TYPE_PP(tmp) != IS_STRING) {
php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter");
_php_pgsql_free_params(params, num_params);
@@ -1495,8 +1497,7 @@ PHP_FUNCTION(pg_execute)
if (otype == IS_NULL) {
params[i] = NULL;
- }
- else {
+ } else {
params[i] = Z_STRVAL_PP(tmp);
}