Aahrg, my mind is breaking up here.
The code snippet that needs to run to get XPM to break is, *drumroll*,
test_do([[ mixed eat_stack() { mixed err = 1; if (catch (err = eat_stack()) || err != 10) return intp (err) && err ? err + 1 : err; if (err = catch { class Foo { object foo; static void create(object o) {foo = o;} }; Foo foo; for(int i=0; i < 10000; i++) foo = Foo(foo); gc(); }) return err; }; if (mixed err = eat_stack()) throw (err); ]])
I found it through manual binary search. Every other test is commented out with dnl. If I comment out this one, XPM works again.
I'm starting to suspect that there is something other then memcmp that is funny here... I can't seem to find any way of forcing sort to behave, so I consider sort() as totally ok (for now). But I'm slowly going insane now, so don't trust me.
/ Mirar
Previous text:
2003-01-31 08:11: Subject: XPM and sort
After some research, I can clearly see that memcmp isn't sorting binary either. But I don't know which operation in the main testsuite that makes it behave that way.
Right now I plan to do some research and add a configure test to spot the behaviour, and then undefine HAVE_MEMCMP if it's broken...
/ Mirar