Jberkel has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/240388

Change subject: Fix off-by one error in gsub
......................................................................

Fix off-by one error in gsub

Change-Id: I49c0386970e007271d23087fd112580af7b21c9c
---
M engines/LuaCommon/lualib/ustring/ustring.lua
M tests/engines/LuaCommon/UstringLibraryTests.lua
2 files changed, 13 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Scribunto 
refs/changes/88/240388/1

diff --git a/engines/LuaCommon/lualib/ustring/ustring.lua 
b/engines/LuaCommon/lualib/ustring/ustring.lua
index 57456ac..da757e8 100644
--- a/engines/LuaCommon/lualib/ustring/ustring.lua
+++ b/engines/LuaCommon/lualib/ustring/ustring.lua
@@ -937,7 +937,7 @@
        local init = 1
        local ct = 0
        local ret = {}
-       while init < cps.len and ct < n do
+       while init < cps.len + 1 and ct < n do
                local m = { find( s, cps, pattern, pat, init ) }
                if not m[1] then
                        break
diff --git a/tests/engines/LuaCommon/UstringLibraryTests.lua 
b/tests/engines/LuaCommon/UstringLibraryTests.lua
index bc81350..c9bebbf 100644
--- a/tests/engines/LuaCommon/UstringLibraryTests.lua
+++ b/tests/engines/LuaCommon/UstringLibraryTests.lua
@@ -463,6 +463,18 @@
          expect = { 1 }
        },
 
+       { name = 'gsub: (emtpy string, empty pattern)', func = mw.ustring.gsub,
+         args = { '', '', 'X' },
+         expect = { 'X', 1 }
+       },
+       { name = 'gsub: (emtpy string, one char pattern)', func = 
mw.ustring.gsub,
+               args = { '', 'á', 'X' },
+               expect = { '', 0 }
+       },
+       { name = 'gsub: (one char string, one char pattern)', func = 
mw.ustring.gsub,
+         args = { 'á', 'á', 'X' },
+         expect = { 'X', 1 }
+       },
        { name = 'gsub: (string 1)', func = mw.ustring.gsub,
          args = { str2, 'f%a+', 'X' },
          expect = { 'X bar X X baz X X X', 6 }

-- 
To view, visit https://gerrit.wikimedia.org/r/240388
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I49c0386970e007271d23087fd112580af7b21c9c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Scribunto
Gerrit-Branch: master
Gerrit-Owner: Jberkel <jan.ber...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to