rzel / kahlua

Automatically exported from code.google.com/p/kahlua
0 stars 0 forks source link

string.gsub fails for certain cases #30

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
a = "cxxMMMCDLVI"
print(a:gsub("%l+","(%1)")

official Lua gives:
"(cxx)MMMCDLVI"

Kahlua gives:

java.lang.NullPointerException
    at se.krka.kahlua.stdlib.StringLib.addString(StringLib.java:1481)
    at se.krka.kahlua.stdlib.StringLib.addValue(StringLib.java:1442)
    at se.krka.kahlua.stdlib.StringLib.gsub(StringLib.java:1421)
    at se.krka.kahlua.stdlib.StringLib.call(StringLib.java:114)
    at se.krka.kahlua.vm.LuaState.callJava(LuaState.java:233)
    at se.krka.kahlua.vm.LuaState.luaMainloop(LuaState.java:693)
    at se.krka.kahlua.vm.LuaState.call(LuaState.java:217)
    at se.krka.kahlua.vm.LuaState.pcall(LuaState.java:1297)
    at se.krka.kahlua.vm.LuaState.pcall(LuaState.java:1276)
    at Test.main(Test.java:105)

(was fun to get the stacktrace too, the testsuite takes so much care hiding 
this stuff -_- )

Original issue reported on code.google.com by matej...@gmail.com on 9 Sep 2011 at 2:42

GoogleCodeExporter commented 9 years ago
aaand once again it turns out that this is a kind of behavior that reference 
Lua implementation does even though it should fail. apparently in cases where 
there's no capture, %1 is the same as %0

that makes the report invalid, i guess

Original comment by matej...@gmail.com on 9 Sep 2011 at 2:59

GoogleCodeExporter commented 9 years ago
Thanks for the bug report!

This is now fixed in both kahlua and kahlua2, it will not throw an error with 
"invalid capture index" for this usecase. 

Original comment by kristofer.karlsson@gmail.com on 11 Sep 2011 at 7:50