summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--ext/json/json.c2
-rw-r--r--ext/json/tests/bug54484.phpt50
3 files changed, 56 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index f7f9d4b3b5..29d6bd95bc 100644
--- a/NEWS
+++ b/NEWS
@@ -91,6 +91,10 @@ PHP NEWS
. Implemented FR #54540 (Allow loading of arbitrary resource bundles when
fallback is disabled). (David Zuelke, Stas)
+- json extension:
+ . Fixed bug #54484 (Empty string in json_decode doesn't reset
+ json_last_error()). (Ilia)
+
- LDAP extension:
. Fixed bug #53339 (Fails to build when compilng with gcc 4.5 and DSO
libraries). (Clint Byrum, Raphael)
diff --git a/ext/json/json.c b/ext/json/json.c
index ec76c1d5f3..5d3e441980 100644
--- a/ext/json/json.c
+++ b/ext/json/json.c
@@ -589,6 +589,8 @@ static PHP_FUNCTION(json_decode)
return;
}
+ JSON_G(error_code) = 0;
+
if (!str_len) {
RETURN_NULL();
}
diff --git a/ext/json/tests/bug54484.phpt b/ext/json/tests/bug54484.phpt
new file mode 100644
index 0000000000..a8f310885b
--- /dev/null
+++ b/ext/json/tests/bug54484.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Bug #54484 (Empty string in json_decode doesn't reset json_last_error)
+--SKIPIF--
+<?php if (!extension_loaded("json")) print "skip"; ?>
+--FILE--
+<?php
+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());
+?>
+--EXPECT--
+int(0)
+int(0)
+int(4)
+int(0)
+--TEST--
+Bug #54484 (Empty string in json_decode doesn't reset json_last_error)
+--SKIPIF--
+<?php if (!extension_loaded("json")) print "skip"; ?>
+--FILE--
+<?php
+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());
+?>
+--EXPECT--
+int(0)
+int(0)
+int(4)
+int(0)