Edit report at http://bugs.php.net/bug.php?id=54484&edit=1

 ID:                 54484
 Updated by:         scott...@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
 Type:               Bug
 Package:            JSON related
 Operating System:   Linux
 PHP Version:        5.3.6
 Block user comment: N
 Private report:     N

 New Comment:

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.


Previous Comments:
------------------------------------------------------------------------
[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

Reply via email to