Bug #54484 [Opn->Asn]: Empty string in json_decode doesn't set/reset json_last_error
| From: | aharvey@php.net | Date: | Fri, 08 Apr 2011 07:59:07 +0000 |
| Subject: | Bug #54484 [Opn->Asn]: Empty string in json_decode doesn't set/reset json_last_error | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-160021@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=54484&edit=1
ID: 54484
Updated by: aharvey@php.net
Reported by: wildcat at the-wildcat dot de
Summary: Empty string in json_decode doesn't set/reset
json_last_error
-Status: Open
+Status: Assigned
Type: Bug
Package: JSON related
Operating System: Linux
PHP Version: 5.3.6
-Assigned To:
+Assigned To: scottmac
Block user comment: N
Private report: N
Previous Comments:
------------------------------------------------------------------------
[2011-04-08 08:20:41] scottmac@php.net
a string of length 0 skips the decoder and returns null. I'm thinking it
should
set the error code to 4 so I'll fix it to do so.
------------------------------------------------------------------------
[2011-04-07 14:24:55] wildcat at the-wildcat dot de
Description:
------------
If you decode an empty json value, the internal error state doesn't
change.
Decode a valid json value and after that an empty value, the error state
is 0
Decode an invalid json value and after that an empty value, the error
state remains 4 (JSON_ERROR_SYNTAX) (I think it's the same for all error
states, but haven't actually tested)
I'm not quite sure whether an empty string is valid json and should
reset the error state to 0 or whether it is invalid json and should set
the error state to 4. Because a valid empty json string is '""' and not
''
Test script:
---------------
<?php
error_reporting(E_ALL);
json_decode('{"test":"test"}');
var_dump(json_last_error());
json_decode("");
var_dump(json_last_error());
json_decode("invalid json");
var_dump(json_last_error());
json_decode("");
var_dump(json_last_error());
?>
Expected result:
----------------
int(0)
int(0)
int(4)
int(0)
OR
int(0)
int(4)
int(4)
int(4)
Actual result:
--------------
int(0)
int(0)
int(4)
int(4)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=54484&edit=1