andrei Mon Oct 16 17:04:51 2006 UTC
Modified files:
/php-src/ext/json json.c
Log:
Patch to support primitive types. (Ilia)
http://cvs.php.net/viewvc.cgi/php-src/ext/json/json.c?r1=1.14&r2=1.15&diff_format=u
Index: php-src/ext/json/json.c
diff -u php-src/ext/json/json.c:1.14 php-src/ext/json/json.c:1.15
--- php-src/ext/json/json.c:1.14 Sat Jul 22 15:23:23 2006
+++ php-src/ext/json/json.c Mon Oct 16 17:04:51 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: json.c,v 1.14 2006/07/22 15:23:23 nlopess Exp $ */
+/* $Id: json.c,v 1.15 2006/10/16 17:04:51 andrei Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -446,10 +446,35 @@
}
else
{
+ double d;
+ int type;
+ long p;
+
zval_dtor(z);
FREE_ZVAL(z);
efree(utf16);
- RETURN_NULL();
+
+ if (parameter_len == 4) {
+ if (!strcasecmp(parameter, "null")) {
+ RETURN_NULL();
+ } else if (!strcasecmp(parameter, "true")) {
+ RETURN_BOOL(1);
+ }
+ } else if (parameter_len == 5 && !strcasecmp(parameter, "false")) {
+ RETURN_BOOL(0);
+ }
+ if ((type = is_numeric_string(parameter, parameter_len, &p, &d, 0)) !=
0) {
+ if (type == IS_LONG) {
+ RETURN_LONG(p);
+ } else if (type == IS_DOUBLE) {
+ RETURN_DOUBLE(d);
+ }
+ }
+ if (*parameter == '"' || parameter[parameter_len] == '"') {
+ RETURN_STRINGL(parameter+1, parameter_len-2, 1);
+ } else {
+ RETURN_STRINGL(parameter, parameter_len, 1);
+ }
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php