aboutsummaryrefslogtreecommitdiffstats
path: root/skeletons
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2005-03-04 11:18:44 +0000
committerLev Walkin <vlm@lionet.info>2005-03-04 11:18:44 +0000
commit9332b652e1870c6a8102ca4773c9a52e35484af6 (patch)
treec48e466570499cb610c4a546fa83a8705ecd734e /skeletons
parentfca505cc7a763e0b3ed22c5038a5d5fed5ada0b8 (diff)
fixed ENUMERATED identifier to value conversion
Diffstat (limited to 'skeletons')
-rw-r--r--skeletons/INTEGER.c11
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