]> granicus.if.org Git - php/commitdiff
Restore compatibility with old broken way
authorStanislav Malyshev <stas@php.net>
Tue, 14 Nov 2000 18:33:58 +0000 (18:33 +0000)
committerStanislav Malyshev <stas@php.net>
Tue, 14 Nov 2000 18:33:58 +0000 (18:33 +0000)
Zend/zend_language_scanner.l

index b537c08141ba4b028b54f0d8ef38be3d88be94b6..c71d05e779bc29892bbbe84668529015ac0cb829 100644 (file)
@@ -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;