cvs: ZendEngine2 / zend_execute.c /tests bug39018.phpt bug39018_2.phpt
[email protected] ("Felipe Pena")
| Newsgroups | php.zend-engine.cvs |
|---|---|
| Message-ID | <cvsfelipe1204976495@cvsserver> |
felipe Sat Mar 8 11:41:35 2008 UTC
Modified files:
/ZendEngine2 zend_execute.c
/ZendEngine2/tests bug39018.phpt bug39018_2.phpt
Log:
MFB: Fixed bug #39018 (Error control operator '@' fails to suppress "Uninitialized string offset")
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute.c?r1=1.790&r2=1.791&diff_format=u
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.790 ZendEngine2/zend_execute.c:1.791
--- ZendEngine2/zend_execute.c:1.790 Tue Mar 4 10:06:22 2008
+++ ZendEngine2/zend_execute.c Sat Mar 8 11:41:35 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.c,v 1.790 2008/03/04 10:06:22 dmitry Exp $ */
+/* $Id: zend_execute.c,v 1.791 2008/03/08 11:41:35 felipe Exp $ */
#define ZEND_INTENSIVE_DEBUGGING 0
@@ -207,7 +207,6 @@
if (Z_TYPE_P(T->str_offset.str) == IS_STRING) {
if (((int)T->str_offset.offset<0)
|| (Z_STRLEN_P(T->str_offset.str) <= T->str_offset.offset)) {
- zend_error(E_NOTICE, "Uninitialized string offset: %d", T->str_offset.offset);
Z_STRVAL_P(ptr) = STR_EMPTY_ALLOC();
Z_STRLEN_P(ptr) = 0;
} else {
@@ -218,7 +217,6 @@
} else {
if (((int)T->str_offset.offset<0)
|| (Z_USTRCPLEN_P(T->str_offset.str) <= T->str_offset.offset)) {
- zend_error(E_NOTICE, "Uninitialized string offset: %d", T->str_offset.offset);
Z_USTRVAL_P(ptr) = USTR_MAKE("");
Z_USTRLEN_P(ptr) = 0;
} else {
@@ -1215,6 +1213,9 @@
dim = &tmp;
}
if (result) {
+ if (Z_LVAL_P(dim) < 0 || Z_UNILEN_P(container) <= Z_LVAL_P(dim)) {
+ zend_error(E_NOTICE, "Uninitialized string offset: %ld", Z_LVAL_P(dim));
+ }
container = *container_ptr;
result->str_offset.str = container;
PZVAL_LOCK(container);
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug39018.phpt?r1=1.1&r2=1.2&diff_format=u
Index: ZendEngine2/tests/bug39018.phpt
diff -u /dev/null ZendEngine2/tests/bug39018.phpt:1.2
--- /dev/null Sat Mar 8 11:41:35 2008
+++ ZendEngine2/tests/bug39018.phpt Sat Mar 8 11:41:35 2008
@@ -0,0 +1,82 @@
+--TEST--
+Bug #39018 (Error control operator '@' fails to suppress "Uninitialized string offset")
+--FILE--
+<?php
+
+error_reporting(E_ALL);
+
+$a = 'foo';
+$a[11111111111];
+
+$a = '';
+
+$a[0];
+
+print $a[0]; // 12
+
+$a[-11111111111111111111111];
+
+print $a[-11111111111111111111111]; // 16
+
+$a[-0];
+
+$x = 'test';
+
+@$x[4];
+
+@$y = $x[4];
+
+@('a' == $x[4]);
+
+$x[4] == 'a'; // 28
+
+@$x[4] == 'a';
+
+(@$x[4]) == 'a';
+
+($x[4]) == 'a'; // 34
+
+(@($x[4])) == 'a';
+
+(($x[4])) == 'a'; // 38
+
+@($x[4]) == 'a';
+
+($x[4]) == 'a'; // 42
+
+@($x[4] == 'a');
+
+($x[4] == 'a'); // 46
+
+$y = 'foobar';
+
+$y[12.2];
+
+print $y[12.2]; // 52
+
+$y[3.5];
+
+print $y[3.5]; // 56
+
+print "\nDone\n";
+
+?>
+--EXPECTF--
+
+Notice: Uninitialized string offset: 0 in %s on line 12
+
+Notice: Uninitialized string offset: -2147483648 in %s on line 16
+
+Notice: Uninitialized string offset: 4 in %s on line 28
+
+Notice: Uninitialized string offset: 4 in %s on line 34
+
+Notice: Uninitialized string offset: 4 in %s on line 38
+
+Notice: Uninitialized string offset: 4 in %s on line 42
+
+Notice: Uninitialized string offset: 4 in %s on line 46
+
+Notice: Uninitialized string offset: 12 in %s on line 52
+b
+Done
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug39018_2.phpt?r1=1.1&r2=1.2&diff_format=u
Index: ZendEngine2/tests/bug39018_2.phpt
diff -u /dev/null ZendEngine2/tests/bug39018_2.phpt:1.2
--- /dev/null Sat Mar 8 11:41:35 2008
+++ ZendEngine2/tests/bug39018_2.phpt Sat Mar 8 11:41:35 2008
@@ -0,0 +1,18 @@
+--TEST--
+Bug #39018 [2] (Error control operator '@' fails to suppress "Uninitialized string offset")
+--FILE--
+<?php
+
+error_reporting(E_ALL);
+
+$foo = 'test';
+$x = @$foo[6];
+
+print @($foo[100] + $foo[130]);
+
+print "\nDone\n";
+
+?>
+--EXPECT--
+0
+Done