diff options
-rw-r--r-- | src/lstrlib.js | 2 | ||||
-rw-r--r-- | tests/single.lua | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/lstrlib.js b/src/lstrlib.js index 2e623b6..13e325e 100644 --- a/src/lstrlib.js +++ b/src/lstrlib.js @@ -361,7 +361,7 @@ const str_format = function(L) { } else { let zero = s.indexOf(0); lauxlib.luaL_argcheck(L, zero < 0 || zero === s.length - 1, arg, "string contains zeros"); - if (form.indexOf('.') < 0 && s.length >= 100) { + if (form.indexOf('.'.charCodeAt(0)) < 0 && s.length >= 100) { /* no precision and string is too long to be formatted */ concat(b, s); /* keep entire string */ lapi.lua_pop(L, 1); /* remove result from 'luaL_tolstring' */ diff --git a/tests/single.lua b/tests/single.lua index c87ac7e..8ca9fbb 100644 --- a/tests/single.lua +++ b/tests/single.lua @@ -165,3 +165,8 @@ assert(tonumber(string.format("%f", 10.3)) == 10.3) x = string.format('"%-50s"', 'a') assert(#x == 52) assert(string.sub(x, 1, 4) == '"a ') + +assert(string.format("-%.20s.20s", string.rep("%", 2000)) == + "-"..string.rep("%", 20)..".20s") +assert(string.format('"-%20s.20s"', string.rep("%", 2000)) == + string.format("%q", "-"..string.rep("%", 2000)..".20s")) |