Gross hack to omit printing hex floating point when the lua number

type is int64. While lua is setup for the representation, it's not
setup to properly print the numbers as ints. This is the least-gross
way around that, and won't affect the bootloader where we do this.
This commit is contained in:
Warner Losh 2018-01-26 17:56:20 +00:00
parent 4dbbaf2021
commit 919cf86c87
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=328443

View File

@ -951,12 +951,16 @@ static void addliteral (lua_State *L, luaL_Buffer *b, int arg) {
case LUA_TNUMBER: {
char *buff = luaL_prepbuffsize(b, MAX_ITEM);
int nb;
#if LUA_FLOAT_TYPE != LUA_FLOAT_INT64
if (!lua_isinteger(L, arg)) { /* float? */
lua_Number n = lua_tonumber(L, arg); /* write as hexa ('%a') */
nb = lua_number2strx(L, buff, MAX_ITEM, "%" LUA_NUMBER_FRMLEN "a", n);
checkdp(buff, nb); /* ensure it uses a dot */
}
else { /* integers */
#else
{
#endif
lua_Integer n = lua_tointeger(L, arg);
const char *format = (n == LUA_MININTEGER) /* corner case? */
? "0x%" LUA_INTEGER_FRMLEN "x" /* use hexa */