diff options
Diffstat (limited to 'dev-lang/lua/files/5.2.0/02_all_hex_number_handling.upstream.patch')
-rw-r--r-- | dev-lang/lua/files/5.2.0/02_all_hex_number_handling.upstream.patch | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/dev-lang/lua/files/5.2.0/02_all_hex_number_handling.upstream.patch b/dev-lang/lua/files/5.2.0/02_all_hex_number_handling.upstream.patch new file mode 100644 index 000000000000..26519e378e68 --- /dev/null +++ b/dev-lang/lua/files/5.2.0/02_all_hex_number_handling.upstream.patch @@ -0,0 +1,26 @@ +--- lua-5.2.0.orig/src/llex.c 2007/12/28 15:32:23 2.25.1.3 ++++ lua-5.2.0/src/llex.c 2009/06/15 14:07:34 +@@ -223,12 +223,19 @@ + + /* LUA_NUMBER */ + static void read_numeral (LexState *ls, SemInfo *seminfo) { ++ const char *expo = "Ee"; ++ int first = ls->current; + lua_assert(lisdigit(ls->current)); +- do { +- save_and_next(ls); +- if (check_next(ls, "EePp")) /* exponent part? */ ++ save_and_next(ls); ++ if (first == '0' && check_next(ls, "Xx")) /* hexadecimal? */ ++ expo = "Pp"; ++ for (;;) { ++ if (check_next(ls, expo)) /* exponent part? */ + check_next(ls, "+-"); /* optional exponent sign */ +- } while (lislalnum(ls->current) || ls->current == '.'); ++ if (lisxdigit(ls->current) || ls->current == '.') ++ save_and_next(ls); ++ else break; ++ } + save(ls, '\0'); + buffreplace(ls, '.', ls->decpoint); /* follow locale for decimal point */ + if (!buff2d(ls->buff, &seminfo->r)) /* format error? */ |