gnosygnu / xowa

xowa offline wiki application
Other
374 stars 41 forks source link

Scributo engine error(s) #329

Closed desb42 closed 5 years ago

desb42 commented 5 years ago

In trying to investigate #326 I came across de.wikipedia.org/wiki/Vorlage:Lang This has a big red box with the following error

INTERNAL: @c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:59 
 vm error: java.lang.IllegalArgumentException: Argument is not an array
stack traceback:
  c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:53: in function <c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:52>
  Module:TemplateData:1079: in function '__index'
  Module:TemplateData:1543: in function '__index'
  Module:TemplateData:1726: in function <Module:TemplateData:1721>
  Module:TemplateData:1591: in function <Module:TemplateData:1585>
  [Java]: in function <[Java]:-1>
  Module:TemplateData:1754: in function <Module:TemplateData:1752>
  mw.lua:531: in function <mw.lua:530>
  [Java]: in function '__index'
  c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:75: in function '__index'
  c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:53: in function <c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:52>

This identified another issue (#327) That led to de.wikipedia.org/wiki/Vorlage:Lang/Doku - which triggered another issue (#328) However this indicated the template de.wikipedia.org/wiki/Vorlage:TemplateData which led to de.wikipedia.org/wiki/Modul:TemplateData There is an english equivalent en.wikipedia.org/wiki/Module:TemplateData Looking at en.wikipedia.org/wiki/Module:TemplateData/doc this refers to en.wikipedia.org/wiki/Template:Format_TemplateData which finally show what I think is the equivalent Scribunto error

INTERNAL: @c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:59
 vm error: java.lang.IllegalArgumentException: Argument is not an array
stack traceback:
  c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:53: in function <c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:52>
  Module:TemplateData:769: in function '__index'
  Module:TemplateData:987: in function '__index'
  Module:TemplateData:1116: in function <Module:TemplateData:1111>
  Module:TemplateData:1039: in function <Module:TemplateData:1031>
  [Java]: in function <[Java]:-1>
  Module:TemplateData:1150: in function <Module:TemplateData:1147>
  mw.lua:531: in function <mw.lua:530>
  [Java]: in function '__index'
  c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:75: in function '__index'
  c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:53: in function '__index'
  mw.lua:199: in function '__index'
  Module:Arguments:244: in function <Module:Arguments:232>
  Module:documentation:643: in function '__index'
  Module:documentation:128: in function <Module:documentation:119>
  mw.lua:531: in function <mw.lua:530>
  [Java]: in function '__index'
  c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:75: in function <c:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:74>
  [Java]: in ?

Sorry about this, but over to you

gnosygnu commented 5 years ago

Hey, thanks for the detailed breakdown.

In short, this was a problem with XOWA's implementation of a JsonEncode/JsonDecode function. The PHP version is very lax in terms of its input. In this case, PHP accepts any string ("abc") and returns it. XOWA was failing b/c it was expecting a JSON-like string ({"key":"val"})

The above commit provides basic handling of these cases. I doubt this handles all scenarios but I guess I'll address them on a case-by-case basis.

[EDIT: Oops, I accidentally pushed a change for Html Databases: Xow_hdump_mgr__save.java . It's not related to this issue]

desb42 commented 5 years ago

I have integrated your changes and they work just fine Thanks again

gnosygnu commented 5 years ago

Cool. Thanks. Closing this issue