Arg module broken
Imported from https://youtrack.roxen.com/issue/PIKE-6
Reported by Marcus Wellhardh wellhard@roxen.com
Installing patch "2017-02-01T151715: Pike 8.0: sizeof on Mysql.SqlTable, JWT & JWK" breaks the Arg module:
> apollo:roxen wellhard$ ./server-6.0.130/bin/roxen
Pike v8.0 release 232 running Hilfe v3.5 (Incremental Pike Frontend)
> indices(Arg);
server-6.0.130/pike/lib/modules/Arg.pmod:421:Bad argument 1 to unknown function.
server-6.0.130/pike/lib/modules/Arg.pmod:421:Expected: int.
server-6.0.130/pike/lib/modules/Arg.pmod:421:Got : object(implements program(/Users/wellhard/Testarea/roxen-6.0.130-r1-ep-macosx_x86_64/roxen/server-6.0.130/pike/lib/modules/Arg.pmod:397)).
server-6.0.130/pike/lib/modules/Arg.pmod:421:Too many arguments to unknown function (expected 1 arguments).
server-6.0.130/pike/lib/modules/Arg.pmod:421:Got : zero.
server-6.0.130/pike/lib/modules/Arg.pmod:491:Cannot inherit program in pass 2 which is not fully compiled yet.
server-6.0.130/pike/lib/modules/Arg.pmod:491:(You probably have a cyclic symbol dependency that the compiler cannot handle.)
server-6.0.130/pike/lib/modules/Arg.pmod:548:Cannot inherit program in pass 2 which is not fully compiled yet.
server-6.0.130/pike/lib/modules/Arg.pmod:548:(You probably have a cyclic symbol dependency that the compiler cannot handle.)
server-6.0.130/pike/lib/modules/Arg.pmod:637:Placeholder already has storage!
The following patch fixes the problem:
apollo:roxen wellhard$ diff -u server-6.0.130/pike/lib/modules/Arg.pmod.ORIG server-6.0.130/pike/lib/modules/Arg.pmod
--- server-6.0.130/pike/lib/modules/Arg.pmod.ORIG 2017-02-22 11:38:22.000000000 +0100
+++ server-6.0.130/pike/lib/modules/Arg.pmod 2017-02-22 11:47:47.000000000 +0100
@@ -418,7 +418,13 @@
env = getenv();
// Make a list of all the arguments we can parse.
- foreach(::_indices(this, 0), string index)
+ foreach(
+#if __BUILD__ < 368
+ ::_indices(2)
+#else
+ ::_indices(this, 0)
+#endif
+ , string index)
{
mixed val = ::`[](index, this, 0);
if(objectp(val) && val->is_opt) opts[index]=val;