From: Ilia Alshanetsky Date: Thu, 18 Jan 2007 23:28:08 +0000 (+0000) Subject: Syntax highlighting fix for hex numbers. X-Git-Tag: php-5.2.1RC3~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4383f51c4452a036d02269e78508d925b81343b8;p=php Syntax highlighting fix for hex numbers. # Patch by Matt Wilmas --- diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 76657ae04a..f0524de50d 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1253,22 +1253,21 @@ NEWLINE ("\r"|"\n"|"\r\n") } {HNUM} { - /* Skip "0x" */ - yytext += 2; - yyleng -= 2; + char *hex = yytext + 2; /* Skip "0x" */ + int len = yyleng - 2; /* Skip any leading 0s */ - while (*yytext == '0') { - yytext++; - yyleng--; + while (*hex == '0') { + hex++; + len--; } - if (yyleng < SIZEOF_LONG * 2 || (yyleng == SIZEOF_LONG * 2 && *yytext <= '7')) { - zendlval->value.lval = strtol(yytext, NULL, 16); + if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) { + zendlval->value.lval = strtol(hex, NULL, 16); zendlval->type = IS_LONG; return T_LNUMBER; } else { - zendlval->value.dval = zend_hex_strtod(yytext, NULL); + zendlval->value.dval = zend_hex_strtod(hex, NULL); zendlval->type = IS_DOUBLE; return T_DNUMBER; }