From: Ondrej Zajicek Date: Thu, 22 Dec 2011 12:44:43 +0000 (+0100) Subject: Fixes parsing larger numbers on 64bit platforms. X-Git-Tag: v1.3.5~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c32c3f88f0c8788118ed3701c11a5aea2aaf9356;p=thirdparty%2Fbird.git Fixes parsing larger numbers on 64bit platforms. --- diff --git a/conf/cf-lex.l b/conf/cf-lex.l index a43f9eb94..408fa93a1 100644 --- a/conf/cf-lex.l +++ b/conf/cf-lex.l @@ -129,10 +129,10 @@ include ^{WHITE}*include{WHITE}*\".*\"{WHITE}*; 0x{XIGIT}+ { char *e; - long int l; + unsigned long int l; errno = 0; l = strtoul(yytext+2, &e, 16); - if (e && *e || errno == ERANGE || (long int)(int) l != l) + if (e && *e || errno == ERANGE || (unsigned long int)(unsigned int) l != l) cf_error("Number out of range"); cf_lval.i = l; return NUM; @@ -140,10 +140,10 @@ include ^{WHITE}*include{WHITE}*\".*\"{WHITE}*; {DIGIT}+ { char *e; - long int l; + unsigned long int l; errno = 0; l = strtoul(yytext, &e, 10); - if (e && *e || errno == ERANGE || (long int)(int) l != l) + if (e && *e || errno == ERANGE || (unsigned long int)(unsigned int) l != l) cf_error("Number out of range"); cf_lval.i = l; return NUM;