fixed ENUMERATED identifier to value conversion
diff --git a/skeletons/INTEGER.c b/skeletons/INTEGER.c
index de856d8..246a02d 100644
--- a/skeletons/INTEGER.c
+++ b/skeletons/INTEGER.c
@@ -241,6 +241,7 @@
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 @@
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