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