Date: Mon, 20 Dec 1999 15:39:49 +0100 From: Andreas Weller <aw6@informatik.uni-ulm.de> Short: Functions with more than 255 Arguments not detected Type: Bug State: Done - fixed in 3.2.8-dev.176 Hallo Lars, Der Aufruf von Funktionen mit mehr als 255 Argumenten ergibt unvorhersehbare bis katastrophale Ergebnisse: z.B s="%s"*300; a=map(allocate(300),lambda(0,"text")); apply(#'sprintf, s, a); oder auch einfach printf("%s"*300, "0", "1", ... "300"); ) Das klappt auch mit Lfuns: void foo(varargs mixed a) {} foo(1,2,3, ... 300); Ursache ist wohl, dass die Anzahl der Argumente anz immer in einem Byte codiert wird, und die Funktion dann arbeitet, als ob es (anz mod 256) Argumente waeren. Auf den Stack wurden aber wirklich alle Argumente gepusht, die Funktion arbeitet also mit falschen Argumenten. Wenn dies zu keinem Laufzeitfehler fuehrt ist nach der Ausfuehrung der Stack nicht ordentlich aufgeraeumt: 1999.12.20 15:10:10 Bad stack at F_RETURN, 256 values too high 1999.12.20 15:10:10 Current object was test_master#0 Gruesse, Andreas (zwirch)