summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2010-08-18 01:59:37 +0000
committerFelipe Pena <felipe@php.net>2010-08-18 01:59:37 +0000
commit2fb2f81538704fc6c09173e3843f22aa6b3d04fc (patch)
tree412f729341c3c096360059dc293d36c67285b09b
parented806c44613ca233d17f32e1513df7a7a4fd82bc (diff)
downloadphp-git-2fb2f81538704fc6c09173e3843f22aa6b3d04fc.tar.gz
- Improved fix for bug #52573
-rw-r--r--Zend/zend_compile.c3
-rwxr-xr-xext/spl/spl_directory.c2
-rw-r--r--ext/spl/tests/bug52573.phpt14
3 files changed, 13 insertions, 6 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 0ccacbb27d..febf2da905 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -2551,7 +2551,8 @@ static zend_bool zend_do_perform_implementation_check(const zend_function *fe, c
return 0;
}
- if (proto->common.pass_rest_by_reference
+ if (fe->common.type != ZEND_USER_FUNCTION
+ && proto->common.pass_rest_by_reference
&& !fe->common.pass_rest_by_reference) {
return 0;
}
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c
index 1c21a53ec3..5a3bd48ea5 100755
--- a/ext/spl/spl_directory.c
+++ b/ext/spl/spl_directory.c
@@ -2583,7 +2583,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fgetss, 0, 0, 0)
ZEND_ARG_INFO(0, allowable_tags)
ZEND_END_ARG_INFO()
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fscanf, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fscanf, 1, 0, 1)
ZEND_ARG_INFO(0, format)
ZEND_END_ARG_INFO()
diff --git a/ext/spl/tests/bug52573.phpt b/ext/spl/tests/bug52573.phpt
index 17f2984dfb..54587fae1d 100644
--- a/ext/spl/tests/bug52573.phpt
+++ b/ext/spl/tests/bug52573.phpt
@@ -1,12 +1,18 @@
--TEST--
Bug #52573 (SplFileObject::fscanf Segmentation fault)
--FILE--
-<?php
+<?php // test
$result = null;
$f = new SplFileObject(__FILE__, 'r');
-$f->fscanf('<?php // %s', $result);
-
+var_dump($f->fscanf('<?php // %s', $result));
+var_dump($result);
+var_dump($f->fscanf('<?php // %s'));
?>
--EXPECTF--
-Warning: Parameter 3 to fscanf() expected to be a reference, value given in %s on line 5
+int(1)
+string(4) "test"
+array(1) {
+ [0]=>
+ NULL
+}