summaryrefslogtreecommitdiff
path: root/src/lj_lex.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_lex.c')
-rw-r--r--src/lj_lex.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lj_lex.c b/src/lj_lex.c
index ac0d1e95..78458572 100644
--- a/src/lj_lex.c
+++ b/src/lj_lex.c
@@ -170,10 +170,15 @@ static void lex_number(LexState *ls, TValue *tv)
170 if (c == 'I') { /* Return cdata holding a complex number. */ 170 if (c == 'I') { /* Return cdata holding a complex number. */
171 GCcdata *cd = lj_cdata_new_(ls->L, CTID_COMPLEX_DOUBLE, 2*sizeof(double)); 171 GCcdata *cd = lj_cdata_new_(ls->L, CTID_COMPLEX_DOUBLE, 2*sizeof(double));
172 ((double *)cdataptr(cd))[0] = 0; 172 ((double *)cdataptr(cd))[0] = 0;
173 ((double *)cdataptr(cd))[1] = tv->n; 173 ((double *)cdataptr(cd))[1] = numberVnum(tv);
174 lj_parse_keepcdata(ls, tv, cd); 174 lj_parse_keepcdata(ls, tv, cd);
175 } 175 }
176#endif 176#endif
177 if (LJ_DUALNUM && tvisnum(tv)) {
178 int32_t k = lj_num2int(numV(tv));
179 if ((lua_Number)k == numV(tv)) /* -0 cannot end up here. */
180 setintV(tv, k);
181 }
177 return; 182 return;
178 } 183 }
179 lj_lex_error(ls, TK_number, LJ_ERR_XNUMBER); 184 lj_lex_error(ls, TK_number, LJ_ERR_XNUMBER);
@@ -506,7 +511,7 @@ void lj_lex_init(lua_State *L)
506 for (i = 0; i < TK_RESERVED; i++) { 511 for (i = 0; i < TK_RESERVED; i++) {
507 GCstr *s = lj_str_newz(L, tokennames[i]); 512 GCstr *s = lj_str_newz(L, tokennames[i]);
508 fixstring(s); /* Reserved words are never collected. */ 513 fixstring(s); /* Reserved words are never collected. */
509 s->reserved = cast_byte(i+1); 514 s->reserved = (uint8_t)(i+1);
510 } 515 }
511} 516}
512 517