summaryrefslogtreecommitdiff
path: root/ext/standard/scanf.c
diff options
context:
space:
mode:
authorMoriyoshi Koizumi <moriyoshi@php.net>2003-01-19 17:23:48 +0000
committerMoriyoshi Koizumi <moriyoshi@php.net>2003-01-19 17:23:48 +0000
commitdfbfa1a36fb13db4103c9d1e134a03bf686514b8 (patch)
tree232531b0714ccde1e4791a3ecc8c08234c3f229a /ext/standard/scanf.c
parent2efab7a22a700e8408e8dd1dd904f9eca517fe4b (diff)
downloadphp-git-dfbfa1a36fb13db4103c9d1e134a03bf686514b8.tar.gz
Improved the patched part to prevent further potential bugs
Diffstat (limited to 'ext/standard/scanf.c')
-rw-r--r--ext/standard/scanf.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c
index 32a8768727..54723e1b0a 100644
--- a/ext/standard/scanf.c
+++ b/ext/standard/scanf.c
@@ -762,9 +762,14 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
case 'n':
if (!(flags & SCAN_SUPPRESS)) {
if (numVars) {
+ zend_uint refcount;
+
current = args[objIndex++];
+ refcount = (*current)->refcount;
zval_dtor( *current );
ZVAL_LONG( *current, (long)(string - baseString) );
+ (*current)->refcount = refcount;
+ (*current)->is_ref = 1;
} else {
add_index_long(*return_value, objIndex++, string - baseString);
}
@@ -882,9 +887,14 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
}
if (!(flags & SCAN_SUPPRESS)) {
if (numVars) {
+ zend_uint refcount;
+
current = args[objIndex++];
+ refcount = (*current)->refcount;
zval_dtor( *current );
ZVAL_STRINGL( *current, string, end-string, 1);
+ (*current)->refcount = refcount;
+ (*current)->is_ref = 1;
} else {
add_index_stringl( *return_value, objIndex++, string, end-string, 1);
}