diff -aur otp_src_R8B-2/lib/erl_interface/src/erl_marshal.c otp_src_R8B-2.fixed/lib/erl_interface/src/erl_marshal.c --- otp_src_R8B-2/lib/erl_interface/src/erl_marshal.c Tue Jul 30 16:31:11 2002 +++ otp_src_R8B-2.fixed/lib/erl_interface/src/erl_marshal.c Tue Sep 24 23:50:46 2002 @@ -1449,7 +1449,7 @@ case ERL_SMALL_TUPLE_EXT: i = *(*e1)++; j = *(*e2)++; if (i < j) return -1; - if (j > j ) return 1; + if (i > j ) return 1; while (i--) { if ((j = compare_top_ext(e1, e2))) return j; } @@ -1460,7 +1460,7 @@ j = (**e2 << 24) | ((*e2)[1]) << 16| ((*e2)[2]) << 8| ((*e2)[3]) ; *e2 += 4; if (i < j) return -1; - if (j > j ) return 1; + if (i > j ) return 1; while (i--) { if ((j = compare_top_ext(e1, e2))) return j; } @@ -1545,6 +1545,9 @@ ei_free_big(b1); ei_free_big(b2); + *e1 += i1; + *e2 += i2; + return res; } @@ -1562,6 +1565,9 @@ f1 = l1; + *e1 += i1; + *e2 += i2; + return cmp_floats(f1,f2); } @@ -1592,6 +1598,9 @@ ei_free_big(b2); + *e1 += i1; + *e2 += i2; + return cmp_floats(f1,f2); } @@ -1610,6 +1619,9 @@ return 1; } + *e1 += i1; + *e2 += i2; + if ( l1 < l2 ) return -1; else if ( l1 > l2 ) return 1; else return 0; @@ -1624,6 +1636,9 @@ if ( ei_decode_double(*e1,&i1,&f1) < 0 ) return -1; if ( ei_decode_double(*e2,&i2,&f2) < 0 ) return 1; + *e1 += i1; + *e2 += i2; + return cmp_floats(f1,f2); } @@ -1650,6 +1665,9 @@ ei_free_big(b1); ei_free_big(b2); + *e1 += i1; + *e2 += i2; + return res; }