Fix string.split returning an empty table if string starts with sepearator (#7827)
authorPierre-Yves Rollo <dev@pyrollo.com>
Thu, 1 Nov 2018 20:07:01 +0000 (21:07 +0100)
committerSmallJoker <SmallJoker@users.noreply.github.com>
Thu, 1 Nov 2018 20:07:01 +0000 (21:07 +0100)
Calling string.split(":A:B:C:D", ":") returns an empty array.
This is due to first empty string not making repeat loop decreasing max_split which has a 0 value when reaching until.
Changing max_splits default value from -1 to -2 fixes that issue.

builtin/common/misc_helpers.lua

index d7f51f07296403af3377dc979e867617467aa768..e250b0ed131425e702411e33cca856e1e389fe32 100644 (file)
@@ -166,7 +166,7 @@ end
 --------------------------------------------------------------------------------
 function string.split(str, delim, include_empty, max_splits, sep_is_pattern)
        delim = delim or ","
-       max_splits = max_splits or -1
+       max_splits = max_splits or -2
        local items = {}
        local pos, len = 1, #str
        local plain = not sep_is_pattern