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