From 00340610e70f3651d267a210e2c2914f1102d086 Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Fri, 24 Mar 2017 11:05:51 +0100 Subject: string.rep: don't repeat if n == 0 --- src/lstrlib.js | 2 +- tests/single.lua | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lstrlib.js b/src/lstrlib.js index 4bd8664..3a2ea39 100644 --- a/src/lstrlib.js +++ b/src/lstrlib.js @@ -668,7 +668,7 @@ const str_rep = function(L) { let n = lauxlib.luaL_checkinteger(L, 2); let sep = lauxlib.luaL_optstring(L, 3, ""); - lapi.lua_pushstring(L, (s + sep).repeat(n - 1) + s); + lapi.lua_pushstring(L, n > 0 ? (s + sep).repeat(n - 1) + s : ""); return 1; }; diff --git a/tests/single.lua b/tests/single.lua index c52a6fb..4bd159c 100644 --- a/tests/single.lua +++ b/tests/single.lua @@ -93,3 +93,9 @@ assert(string.char(0, string.byte("\xe4"), 0) == "\0\xe4\0") assert(string.char(string.byte("\xe4l\0óu", 1, -1)) == "\xe4l\0óu") assert(string.char(string.byte("\xe4l\0óu", 1, 0)) == "") assert(string.char(string.byte("\xe4l\0óu", -10, 100)) == "\xe4l\0óu") + +assert(string.upper("ab\0c") == "AB\0C") +assert(string.lower("\0ABCc%$") == "\0abcc%$") +assert(string.rep('teste', 0) == '') +assert(string.rep('tés\00tê', 2) == 'tés\0têtés\000tê') +assert(string.rep('', 10) == '') -- cgit v1.2.3-54-g00ecf