Merge branch 'PHP-5.6'

This commit is contained in:
kovacs.ferenc 2013-11-18 12:39:40 +01:00
commit a833f7d460
2 changed files with 72 additions and 3 deletions

View file

@ -712,14 +712,14 @@ PHP_JSON_API void php_json_decode_ex(zval *return_value, char *str, int str_len,
RETVAL_NULL();
if (trim_len == 4) {
if (!strncasecmp(trim, "null", trim_len)) {
if (!strncmp(trim, "null", trim_len)) {
/* We need to explicitly clear the error because its an actual NULL and not an error */
jp->error_code = PHP_JSON_ERROR_NONE;
RETVAL_NULL();
} else if (!strncasecmp(trim, "true", trim_len)) {
} else if (!strncmp(trim, "true", trim_len)) {
RETVAL_BOOL(1);
}
} else if (trim_len == 5 && !strncasecmp(trim, "false", trim_len)) {
} else if (trim_len == 5 && !strncmp(trim, "false", trim_len)) {
RETVAL_BOOL(0);
}

View file

@ -0,0 +1,69 @@
--TEST--
Case-sensitivity part of bug #64874 ("json_decode handles whitespace and case-sensitivity incorrectly")
--SKIPIF--
<?php if (!extension_loaded("json")) print "skip"; ?>
--FILE--
<?php
function decode($json) {
var_dump(json_decode($json));
echo ((json_last_error() !== 0) ? 'ERROR' : 'SUCCESS') . PHP_EOL;
}
// Only lowercase should work
decode('true');
decode('True');
decode('[true]');
decode('[True]');
echo PHP_EOL;
decode('false');
decode('False');
decode('[false]');
decode('[False]');
echo PHP_EOL;
decode('null');
decode('Null');
decode('[null]');
decode('[Null]');
echo PHP_EOL;
echo "Done\n";
--EXPECT--
bool(true)
SUCCESS
NULL
ERROR
array(1) {
[0]=>
bool(true)
}
SUCCESS
NULL
ERROR
bool(false)
SUCCESS
NULL
ERROR
array(1) {
[0]=>
bool(false)
}
SUCCESS
NULL
ERROR
NULL
SUCCESS
NULL
ERROR
array(1) {
[0]=>
NULL
}
SUCCESS
NULL
ERROR
Done