What prompted this?  I'm not keen on changing the parser unless there is
some benefit.  Speed, portability, fixing a reported issue, etc.  The
one risk I see here is that isxdigit() is a LOCALE-aware function, so
first, it is likely slower than what it replaces here, and second, a
messed up LOCALE could potentially cause it to misbehave.

-Rasmus

Martin Majlis wrote:
> Just small refactoring. Replacing self-made function with functions
> from standard headers.
> 
> Index: JSON_parser.c
> ===================================================================
> RCS file: /repository/php-src/ext/json/JSON_parser.c,v
> retrieving revision 1.1.2.8
> diff -u -u -r1.1.2.8 JSON_parser.c
> --- JSON_parser.c    24 May 2007 22:37:59 -0000    1.1.2.8
> +++ JSON_parser.c    24 May 2007 23:41:11 -0000
> @@ -29,6 +29,8 @@
> 
> #include "JSON_parser.h"
> #include <stdio.h>
> +#include <math.h>
> +#include <ctype.h>
> 
> #define true  1
> #define false 0
> @@ -259,18 +261,10 @@
> 
> static int dehexchar(char c)
> {
> -    if (c >= '0' && c <= '9')
> -    {
> -        return c - '0';
> -    }
> -    else if (c >= 'A' && c <= 'F')
> -    {
> -        return c - ('A' - 10);
> -    }
> -    else if (c >= 'a' && c <= 'f')
> -    {
> -        return c - ('a' - 10);
> -    }
> +    if (isxdigit(c))
> +    {
> +        return strtol(&c, NULL, 16);
> +    }
>     else
>     {
>         return -1;
> 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to