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

Reply via email to