Closed desb42 closed 4 years ago
On a fresh start of xowa-gui accessing it.wikisource.org/wiki/Indice:De_Flugi_-_Alchünas_Rimas_Romaunschas.djvu I get a number of errors of the form:
it.wikisource.org/wiki/Indice:De_Flugi_-_Alchünas_Rimas_Romaunschas.djvu
invoke failed: Indice:De_Flugi_-_Alchünas_Rimas_Romaunschas.djvu {{#invoke:Testo|testo}} [err 0] <gplx> =Module:Testo:29 bad argument: string expected, got nil stack traceback: Module:Testo:9: in function <Module:Testo:8> mw.lua:535: in function <mw.lua:534> [Java]: in function '__index' g:/xowa_dev/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:75: in function <g:/xowa_dev/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:74> [Java]: in ?: ttl=De_Flugi_-_Alchünas_Rimas_Romaunschas.djvu excerpt={{#invoke:Testo|testo}} [trace]: gplx.xowa.xtns.scribunto.Scrib_core.Handle_error(Unknown Source) gplx.xowa.xtns.scribunto.engines.luaj.Luaj_engine.Dispatch_as_kv_ary(Unknown Source) gplx.xowa.xtns.scribunto.engines.luaj.Luaj_engine.CallFunction(Unknown Source) gplx.xowa.xtns.scribunto.Scrib_core.Invoke(Unknown Source) gplx.xowa.xtns.scribunto.Scrib_invoke_func.Func_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn_.Eval_func(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_defn_tmpl.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_defn_tmpl.Tmpl_evaluate(Unknown Source) gplx.xowa.xtns.lst.Lst_pfunc_itm.New_sect_or_null(Unknown Source) gplx.xowa.xtns.lst.Lst_pfunc_lst.Func_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn_.Eval_func(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Arg_itm_tkn_base.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Arg_nde_tkn.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Arg_itm_tkn_base.Tmpl_evaluate(Unknown Source) gplx.xowa.xtns.pfuncs.ifs.Pfunc_switch.Get_or_eval(Unknown Source) gplx.xowa.xtns.pfuncs.ifs.Pfunc_switch.Func_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn_.Eval_func(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_defn_tmpl.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_defn_tmpl.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn.Eval_sub(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn.Transclude(Unknown Source) gplx.xowa.parsers.tmpls.Xot_invk_tkn.Tmpl_evaluate(Unknown Source) gplx.xowa.parsers.tmpls.Xot_tmpl_wtr.Write_tkn(Unknown Source) gplx.xowa.parsers.tmpls.Xot_tmpl_wtr.Write_tkn(Unknown Source) gplx.xowa.parsers.tmpls.Xot_tmpl_wtr.Write_all(Unknown Source) gplx.xowa.parsers.Xop_parser.Expand_tmpl(Unknown Source) gplx.xowa.parsers.Xop_parser.Expand_tmpl(Unknown Source) gplx.xowa.parsers.Xop_parser.Parse_text_to_wdom(Unknown Source) gplx.xowa.parsers.Xow_parser_mgr.Parse(Unknown Source) gplx.xowa.wikis.pages.Xowe_page_mgr.Load_page(Unknown Source) gplx.xowa.guis.views.Load_page_wkr.Thread__exec(Unknown Source) gplx.core.threads.Gfo_thread_pool.Run_wkr(Unknown Source) gplx.core.threads.Gfo_thread_pool.Invk(Unknown Source) gplx.Gfo_invk_.Invk_by_msg(Unknown Source) gplx.core.threads.Thread_adp.run(Unknown Source) java.lang.Thread.run(Thread.java:748)
As I have been putting dbg statements in the line number may not be the same the lua code around that line is:
dataNs0.title=mw.title.new(args[1]) dataNs0.text=dataNs0.title:getContent() dataNs0.index=string.match(dataNs0.text,'index="(.-)"') dataNs0.SAL=string.match(dataNs0.text,"avz=(%d+)") dataNs0.codeSAL=" [[File:xxx%.svg|9px]]" dataNs0.codeSAL=string.gsub(dataNs0.codeSAL,"xxx",dataNs0.SAL)
I believe the culprit is the line
dataNs0.text=dataNs0.title:getContent()
and the error is triggered by the line
dataNs0.index=string.match(dataNs0.text,'index="(.-)"')
This issue is that getContent in Scrib_lib_title.java returns 'nil' if no content is found Whereas the above Lua code seems to be expecting an empty string (for the subsequent string match)
getContent
If I change line 189
return rv == null ? rslt.Init_obj(null) : rslt.Init_obj(String_.new_u8(rv));
to
return rv == null ? rslt.Init_obj("") : rslt.Init_obj(String_.new_u8(rv));
The problem moves on a few lines
This (I think) is due to the fact that - with the fix dataNs0.text has an empty string The string.match in the line
dataNs0.text
string.match
dataNs0.SAL=string.match(dataNs0.text,"avz=(%d+)")
is returning a nil not an empty string And the line
nil
dataNs0.codeSAL=string.gsub(dataNs0.codeSAL,"xxx",dataNs0.SAL)
goes pop
I suspect that this is a case were the getContent is expected to return something
My code had a bug that did not return anything
My bad, therefore a nonexistent issues - closing
On a fresh start of xowa-gui accessing
it.wikisource.org/wiki/Indice:De_Flugi_-_Alchünas_Rimas_Romaunschas.djvu
I get a number of errors of the form:As I have been putting dbg statements in the line number may not be the same the lua code around that line is:
I believe the culprit is the line
and the error is triggered by the line
This issue is that
getContent
in Scrib_lib_title.java returns 'nil' if no content is found Whereas the above Lua code seems to be expecting an empty string (for the subsequent string match)If I change line 189
to
The problem moves on a few lines
This (I think) is due to the fact that - with the fix
dataNs0.text
has an empty string Thestring.match
in the lineis returning a
nil
not an empty string And the linegoes pop