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




Reply via email to