diff options
author | Lev Walkin <vlm@lionet.info> | 2005-03-04 11:18:44 +0000 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2005-03-04 11:18:44 +0000 |
commit | 9332b652e1870c6a8102ca4773c9a52e35484af6 (patch) | |
tree | c48e466570499cb610c4a546fa83a8705ecd734e /skeletons | |
parent | fca505cc7a763e0b3ed22c5038a5d5fed5ada0b8 (diff) |
fixed ENUMERATED identifier to value conversion
Diffstat (limited to 'skeletons')
-rw-r--r-- | skeletons/INTEGER.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/skeletons/INTEGER.c b/skeletons/INTEGER.c index de856d8f..246a02d5 100644 --- a/skeletons/INTEGER.c +++ b/skeletons/INTEGER.c @@ -241,6 +241,7 @@ INTEGER__compar_enum2value(const void *kp, const void *am) { static const asn_INTEGER_enum_map_t * INTEGER__map_enum2value(asn_INTEGER_specifics_t *specs, const char *lstart, const char *lstop) { + asn_INTEGER_enum_map_t *el_found; int count = specs ? specs->map_count : 0; struct e2v_key key; const char *lp; @@ -266,8 +267,14 @@ INTEGER__map_enum2value(asn_INTEGER_specifics_t *specs, const char *lstart, cons key.stop = lstop; key.vemap = specs->value2enum; key.evmap = specs->enum2value; - return (asn_INTEGER_enum_map_t *)bsearch(&key, specs->value2enum, count, - sizeof(specs->value2enum[0]), INTEGER__compar_enum2value); + el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, + specs->value2enum, count, sizeof(specs->value2enum[0]), + INTEGER__compar_enum2value); + if(el_found) { + /* Remap enum2value into value2enum */ + el_found = key.vemap + key.evmap[el_found - key.vemap]; + } + return el_found; } static int |