diff --git a/Zend/tests/indexing_001.phpt b/Zend/tests/indexing_001.phpt deleted file mode 100644 index 0e466ab8cee24..0000000000000 --- a/Zend/tests/indexing_001.phpt +++ /dev/null @@ -1,214 +0,0 @@ ---TEST-- -Indexing - various special cases. ---FILE-- - ---EXPECTF-- -*** Indexing - Testing value assignment with key *** -array(1) { - ["foo"]=> - array(1) { - [0]=> - int(1) - } -} - -Warning: Cannot use a scalar value as an array in %s on line %d -int(0) - -Warning: Cannot use a scalar value as an array in %s on line %d -int(1) - -Warning: Cannot use a scalar value as an array in %s on line %d -bool(true) -array(1) { - ["foo"]=> - array(1) { - [0]=> - int(1) - } -} -array(1) { - ["foo"]=> - array(1) { - [0]=> - int(1) - } -} - -Warning: Illegal string offset 'foo' in %s on line %d - -Notice: Array to string conversion in %s on line %d -string(1) "A" - -Warning: Cannot use a scalar value as an array in %s on line %d -float(0.1) -array(1) { - ["foo"]=> - array(1) { - [0]=> - int(1) - } -} - -*** Indexing - Testing reference assignment with key *** -array(1) { - ["foo"]=> - &array(1) { - [0]=> - int(1) - } -} - -Warning: Cannot use a scalar value as an array in %s on line %d -int(0) - -Warning: Cannot use a scalar value as an array in %s on line %d -int(1) - -Warning: Cannot use a scalar value as an array in %s on line %d -bool(true) -array(1) { - ["foo"]=> - &array(1) { - [0]=> - int(1) - } -} -array(1) { - ["foo"]=> - &array(1) { - [0]=> - int(1) - } -} - -Warning: Cannot use a scalar value as an array in %s on line %d -float(0.1) -array(1) { - ["foo"]=> - &array(1) { - [0]=> - int(1) - } -} -*** Indexing - Testing value assignment no key *** -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} - -Warning: Cannot use a scalar value as an array in %s on line %d -int(0) - -Warning: Cannot use a scalar value as an array in %s on line %d -int(1) - -Warning: Cannot use a scalar value as an array in %s on line %d -bool(true) -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} - -Warning: Cannot use a scalar value as an array in %s on line %d -float(0.1) -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} - -*** Indexing - Testing reference assignment no key *** -array(1) { - [0]=> - &array(1) { - [0]=> - int(1) - } -} - -Warning: Cannot use a scalar value as an array in %s on line %d -int(0) - -Warning: Cannot use a scalar value as an array in %s on line %d -int(1) - -Warning: Cannot use a scalar value as an array in %s on line %d -bool(true) -array(1) { - [0]=> - &array(1) { - [0]=> - int(1) - } -} -array(1) { - [0]=> - &array(1) { - [0]=> - int(1) - } -} - -Warning: Cannot use a scalar value as an array in %s on line %d -float(0.1) -array(1) { - [0]=> - &array(1) { - [0]=> - int(1) - } -} - -Done \ No newline at end of file diff --git a/Zend/tests/indexing_bool_to_array.phpt b/Zend/tests/indexing_bool_to_array.phpt new file mode 100644 index 0000000000000..ae225c1b9b359 --- /dev/null +++ b/Zend/tests/indexing_bool_to_array.phpt @@ -0,0 +1,60 @@ +--TEST-- +Indexing -- Convert boolean variable to array +--FILE-- + +--EXPECTF-- +Warning: Cannot use a scalar value as an array in %s on line %d +bool(true) +array(1) { + ["foo"]=> + array(1) { + [0]=> + int(1) + } +} + +Warning: Cannot use a scalar value as an array in %s on line %d +bool(true) +array(1) { + ["foo"]=> + &array(1) { + [0]=> + int(1) + } +} + +Warning: Cannot use a scalar value as an array in %s on line %d +bool(true) +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} + +Warning: Cannot use a scalar value as an array in %s on line %d +bool(true) +array(1) { + [0]=> + &array(1) { + [0]=> + int(1) + } +} diff --git a/Zend/tests/indexing_float_to_array.phpt b/Zend/tests/indexing_float_to_array.phpt new file mode 100644 index 0000000000000..ab342dd40f2e7 --- /dev/null +++ b/Zend/tests/indexing_float_to_array.phpt @@ -0,0 +1,26 @@ +--TEST-- +Indexing -- Convert float variable to array +--FILE-- + +--EXPECTF-- +Warning: Cannot use a scalar value as an array in %s on line %d +float(0.1) + +Warning: Cannot use a scalar value as an array in %s on line %d +float(0.1) + +Warning: Cannot use a scalar value as an array in %s on line %d +float(0.1) + +Warning: Cannot use a scalar value as an array in %s on line %d +float(0.1) diff --git a/Zend/tests/indexing_integer_to_array.phpt b/Zend/tests/indexing_integer_to_array.phpt new file mode 100644 index 0000000000000..993a3d1f5e3f2 --- /dev/null +++ b/Zend/tests/indexing_integer_to_array.phpt @@ -0,0 +1,44 @@ +--TEST-- +Indexing -- Convert integer variable to array +--FILE-- + +--EXPECTF-- +Warning: Cannot use a scalar value as an array in %s on line %d +int(1) + +Warning: Cannot use a scalar value as an array in %s on line %d +int(0) + +Warning: Cannot use a scalar value as an array in %s on line %d +int(1) + +Warning: Cannot use a scalar value as an array in %s on line %d +int(0) + +Warning: Cannot use a scalar value as an array in %s on line %d +int(1) + +Warning: Cannot use a scalar value as an array in %s on line %d +int(0) + +Warning: Cannot use a scalar value as an array in %s on line %d +int(1) + +Warning: Cannot use a scalar value as an array in %s on line %d +int(0) diff --git a/Zend/tests/indexing_null_to_array.phpt b/Zend/tests/indexing_null_to_array.phpt new file mode 100644 index 0000000000000..69930f522c0e7 --- /dev/null +++ b/Zend/tests/indexing_null_to_array.phpt @@ -0,0 +1,45 @@ +--TEST-- +Indexing -- Convert null to array +--FILE-- + +--EXPECTF-- +array(1) { + ["foo"]=> + array(1) { + [0]=> + int(1) + } +} +array(1) { + ["foo"]=> + &array(1) { + [0]=> + int(1) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} +array(1) { + [0]=> + &array(1) { + [0]=> + int(1) + } +} diff --git a/Zend/tests/indexing_string_to_array.phpt b/Zend/tests/indexing_string_to_array.phpt new file mode 100644 index 0000000000000..c9c459e5d95a0 --- /dev/null +++ b/Zend/tests/indexing_string_to_array.phpt @@ -0,0 +1,24 @@ +--TEST-- +Indexing -- Convert string to array +--FILE-- + +--EXPECTF-- +Warning: Illegal string offset 'foo' in %s on line %d + +Notice: Array to string conversion in %s on line %d +string(1) "A" + +Warning: Illegal string offset 'foo' in %s on line %d + +Notice: Array to string conversion in %s on line %d +string(5) "A bar" + +Fatal error: [] operator not supported for strings in %s on line %d diff --git a/Zend/tests/indexing_testing.inc b/Zend/tests/indexing_testing.inc new file mode 100644 index 0000000000000..9cb7b95f46785 --- /dev/null +++ b/Zend/tests/indexing_testing.inc @@ -0,0 +1,24 @@ + +--EXPECTF-- +array(1) { + ["foo"]=> + array(1) { + [0]=> + int(1) + } +} +array(1) { + ["foo"]=> + &array(1) { + [0]=> + int(1) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} +array(1) { + [0]=> + &array(1) { + [0]=> + int(1) + } +} diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index c79a55169c86e..df7ef17887eec 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1133,9 +1133,6 @@ static void zend_fetch_dimension_address(temp_variable *result, zval **container case IS_STRING: { zval tmp; - if (type != BP_VAR_UNSET && Z_STRLEN_P(container)==0) { - goto convert_to_array; - } if (dim == NULL) { zend_error_noreturn(E_ERROR, "[] operator not supported for strings"); }