diff options
author | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-01-19 17:23:48 +0000 |
---|---|---|
committer | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-01-19 17:23:48 +0000 |
commit | dfbfa1a36fb13db4103c9d1e134a03bf686514b8 (patch) | |
tree | 232531b0714ccde1e4791a3ecc8c08234c3f229a /ext/standard/scanf.c | |
parent | 2efab7a22a700e8408e8dd1dd904f9eca517fe4b (diff) | |
download | php-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.c | 10 |
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); } |