X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fodr_cons.c;h=5df0fa6dea36a84daad4a24cae6eba8867f3d05f;hp=4a183726184f286e9a70201bf9def64a53a7e20c;hb=833bf58328945361db8a744c0dec2c925c97d43a;hpb=eeff5ede530161a722200afb3d0042e66c954169 diff --git a/src/odr_cons.c b/src/odr_cons.c index 4a18372..5df0fa6 100644 --- a/src/odr_cons.c +++ b/src/odr_cons.c @@ -83,7 +83,7 @@ int odr_constructed_begin(ODR o, void *xxp, int zclass, int tag, o->op->stack_top = o->op->stack_first; assert(o->op->stack_top->prev == 0); } - o->op->stack_top->lenb = o->bp; + o->op->stack_top->lenb = o->op->bp; o->op->stack_top->len_offset = odr_tell(o); o->op->stack_top->name = name ? name : "?"; if (o->direction == ODR_ENCODE) @@ -100,7 +100,7 @@ int odr_constructed_begin(ODR o, void *xxp, int zclass, int tag, } else if (o->direction == ODR_DECODE) { - if ((res = ber_declen(o->bp, &o->op->stack_top->len, + if ((res = ber_declen(o->op->bp, &o->op->stack_top->len, odr_max(o))) < 0) { odr_seterror(o, OOTHER, 31); @@ -108,7 +108,7 @@ int odr_constructed_begin(ODR o, void *xxp, int zclass, int tag, return 0; } o->op->stack_top->lenlen = res; - o->bp += res; + o->op->bp += res; if (o->op->stack_top->len > odr_max(o)) { odr_seterror(o, OOTHER, 32); @@ -128,7 +128,7 @@ int odr_constructed_begin(ODR o, void *xxp, int zclass, int tag, ODR_STACK_POP(o); return 0; } - o->op->stack_top->base = o->bp; + o->op->stack_top->base = o->op->bp; o->op->stack_top->base_offset = odr_tell(o); return 1; } @@ -140,9 +140,9 @@ int odr_constructed_more(ODR o) if (ODR_STACK_EMPTY(o)) return 0; if (o->op->stack_top->len >= 0) - return o->bp - o->op->stack_top->base < o->op->stack_top->len; + return o->op->bp - o->op->stack_top->base < o->op->stack_top->len; else - return (!(*o->bp == 0 && *(o->bp + 1) == 0)); + return (!(*o->op->bp == 0 && *(o->op->bp + 1) == 0)); } int odr_constructed_end(ODR o) @@ -162,7 +162,7 @@ int odr_constructed_end(ODR o) case ODR_DECODE: if (o->op->stack_top->len < 0) { - if (*o->bp++ == 0 && *(o->bp++) == 0) + if (*o->op->bp++ == 0 && *(o->op->bp++) == 0) { ODR_STACK_POP(o); return 1; @@ -173,7 +173,7 @@ int odr_constructed_end(ODR o) return 0; } } - else if (o->bp - o->op->stack_top->base != + else if (o->op->bp - o->op->stack_top->base != o->op->stack_top->len) { odr_seterror(o, OCONLEN, 36);