git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
new struct writeable
[swftools.git]
/
lib
/
as3
/
tokenizer.lex
diff --git
a/lib/as3/tokenizer.lex
b/lib/as3/tokenizer.lex
index
5a8ec32
..
8bf8c89
100644
(file)
--- a/
lib/as3/tokenizer.lex
+++ b/
lib/as3/tokenizer.lex
@@
-147,8
+147,14
@@
static inline int handlenumber()
}
}
if(yytext[0]=='-') {
}
}
if(yytext[0]=='-') {
- avm2_lval.number_int = atoi(s);
- return T_INT;
+ int v = atoi(s);
+ avm2_lval.number_int = v;
+ if(v>-128)
+ return T_BYTE;
+ else if(v>=-32768)
+ return T_SHORT;
+ else
+ return T_INT;
} else {
unsigned int v = 0;
for(t=0;t<yyleng;t++) {
} else {
unsigned int v = 0;
for(t=0;t<yyleng;t++) {
@@
-156,11
+162,10
@@
static inline int handlenumber()
v+=yytext[t]-'0';
}
avm2_lval.number_uint = v;
v+=yytext[t]-'0';
}
avm2_lval.number_uint = v;
- if(v<256)
+ if(v<128)
return T_BYTE;
return T_BYTE;
- /* useless- numbers are usually smaller if stored in the constant pool
- else if(v<0x80000000u)
- return T_SHORT;*/
+ else if(v<32768)
+ return T_SHORT;
else
return T_UINT;
}
else
return T_UINT;
}