summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2000-11-14 18:33:58 +0000
committerStanislav Malyshev <stas@php.net>2000-11-14 18:33:58 +0000
commit2d57a5b2a4f212cb528fbf23798a717580ee456c (patch)
treeb0e6cde36ea19f1964195bf10bfa2e83c75b477b /Zend
parent0b6a8d0458d37d39f6416935c9e4526f31d7a8bd (diff)
downloadphp-git-2d57a5b2a4f212cb528fbf23798a717580ee456c.tar.gz
Restore compatibility with old broken way
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_language_scanner.l8
1 files changed, 7 insertions, 1 deletions
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index b537c08141..c71d05e779 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -1018,10 +1018,16 @@ ANY_CHAR (.|[\n])
errno = 0;
zendlval->value.lval = strtoul(yytext, NULL, 16);
if (errno == ERANGE) { /* overflow */
- /* not trying strtod - it returns trans on 0x-es */
+ /* not trying strtod - it returns trash on 0x-es */
zendlval->value.lval = LONG_MAX; /* maximal long */
zend_error(E_NOTICE,"Hex number is too big: %s",yytext);
} else {
+ if(zendlval->value.lval < 0) {
+ /* maintain consistency with the old way */
+ zendlval->value.dval = (unsigned long) zendlval->value.lval;
+ zendlval->type = IS_DOUBLE;
+ return T_DNUMBER;
+ }
zendlval->type = IS_LONG;
}
zendlval->type = IS_LONG;