I've discovered a "feature" when using the new key implementation. It seems that key_next function dosent walk down the chain of keyes like the old key->next pointer did. I've managed to reproduce this behaviour many times.
Consider this pasm code: new P0, .MultiArray[2;3;2;1;1;1] set P0[0;0;0], 1 set P0[0;0;1], 2 set P0[0;1;0], 3 set I0, P0[0;0;0] print I0 print "\n" set I0, P0[0;0;1] print I0 print "\n" set I0, P0[0;1;0] print I0 print "\n" end produces this output: init_marray key size is 3 key_next is 814bb60 init_marray key size is 2 key_next is 814bb44 init_marray key size is 1 key_next is 814bb28 init_marray key size is 1 key_next is 814bb0c 1 5 3 As you can see above the while loop in multiarray below only iterates 4 times when it should iterate 6 times ( .MultiArray[2;3;2;1;1;1] ). The same happens when i define a 3 dim array .MultiArray[2;2;2] it only iterate 1 time. This means that key_next(interpreter,key) always loose 2 keyes. multiarray.pmc: while (key_next(interpreter, key) != NULL) { printf("init_marray key size is %d\n", key_integer(interpreter, key)); printf("key_next is %x\n", key_next(interpreter, key)); size *= key_integer(interpreter, key); key = key_next(interpreter, key); } Tom is this a know problem? /Josef