X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=odr%2Fodr_choice.c;h=eb0038716e8480b7b8321330e470a6504a4eec1b;hb=47f8bbd041e610b13dd25153872dfef2aa288c52;hp=622203b52bf1eca1d86aa801c3eec6966d48c4c7;hpb=19af2bd8dfd21731cc978beccd1346133d614c67;p=yaz-moved-to-github.git diff --git a/odr/odr_choice.c b/odr/odr_choice.c index 622203b..eb00387 100644 --- a/odr/odr_choice.c +++ b/odr/odr_choice.c @@ -1,10 +1,13 @@ /* - * Copyright (c) 1995-2000, Index Data + * Copyright (c) 1995-2002, Index Data * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss * * $Log: odr_choice.c,v $ - * Revision 1.18 2000-02-29 13:44:55 adam + * Revision 1.19 2002-02-20 14:42:30 adam + * Fixed BER decoding of OPTIONAL CHOICE + * + * Revision 1.18 2000/02/29 13:44:55 adam * Check for config.h (currently not generated). * * Revision 1.17 1999/11/30 13:47:11 adam @@ -76,6 +79,12 @@ int odr_choice(ODR o, Odr_arm arm[], void *p, void *whichp, return 0; if (o->direction != ODR_DECODE && !*(char**)p) return 0; + + if (o->direction == ODR_DECODE) + { + *which = -1; + *(char**)p = 0; + } o->choice_bias = -1; if (o->direction == ODR_PRINT) @@ -131,8 +140,6 @@ int odr_choice(ODR o, Odr_arm arm[], void *p, void *whichp, return 1; } } - *which = -1; - *(char*)p = 0; return 0; }