diff options
Diffstat (limited to 'ext')
| -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); } |
