From fc482dac2bd84df0bb82216b9036b25a2914474c Mon Sep 17 00:00:00 2001
From: Benoit Giannangeli <giann008@gmail.com>
Date: Wed, 26 Apr 2017 09:02:43 +0200
Subject: math.huge is Number.Infinity

---
 src/lauxlib.js  | 11 +++++++++--
 src/lmathlib.js |  2 +-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/lauxlib.js b/src/lauxlib.js
index 3921519..a70e5d0 100644
--- a/src/lauxlib.js
+++ b/src/lauxlib.js
@@ -362,20 +362,27 @@ const luaL_tolstring = function(L, idx) {
             luaL_error(L, lua.to_luastring("'__tostring' must return a string", true));
     } else {
         switch(lua.lua_type(L, idx)) {
-            case lua.LUA_TNUMBER:
+            case lua.LUA_TNUMBER: {
                 if (lua.lua_isinteger(L, idx))
                     lua.lua_pushstring(L, lua.to_luastring(lua.lua_tointeger(L, idx).toString()));
                 else {
                     let n = lua.lua_tonumber(L, idx);
                     let a = Math.abs(n);
                     let s;
-                    if (a > 100000000000000 || a < 0.0001)
+                    if (Object.is(n, Infinity))
+                        s = 'inf';
+                    else if (Object.is(n, -Infinity))
+                        s = '-inf';
+                    else if (Number.isNaN(n))
+                        s = 'nan';
+                    else if (a >= 100000000000000 || a < 0.0001)
                         s = n.toExponential();
                     else
                         s = n.toPrecision(16).replace(/(\.[0-9][1-9]*)0+$/, "$1");
                     lua.lua_pushstring(L, lua.to_luastring(s));
                 }
                 break;
+            }
             case lua.LUA_TSTRING:
                 lua.lua_pushvalue(L, idx);
                 break;
diff --git a/src/lmathlib.js b/src/lmathlib.js
index 49a1abe..7d3a082 100644
--- a/src/lmathlib.js
+++ b/src/lmathlib.js
@@ -259,7 +259,7 @@ const luaopen_math = function(L) {
     lauxlib.luaL_newlib(L, mathlib);
     lua.lua_pushnumber(L, Math.PI);
     lua.lua_setfield(L, -2, lua.to_luastring("pi", true));
-    lua.lua_pushnumber(L, Number.MAX_VALUE);
+    lua.lua_pushnumber(L, Infinity);
     lua.lua_setfield(L, -2, lua.to_luastring("huge", true));
     lua.lua_pushinteger(L, llimit.MAX_INT);
     lua.lua_setfield(L, -2, lua.to_luastring("maxinteger", true));
-- 
cgit v1.2.3-70-g09d2