fix default value cmp/set order
diff --git a/libasn1compiler/asn1c_C.c b/libasn1compiler/asn1c_C.c
index eb84993..be04e9f 100644
--- a/libasn1compiler/asn1c_C.c
+++ b/libasn1compiler/asn1c_C.c
@@ -2309,7 +2309,7 @@
static void
emit_default_string_value(arg_t *arg, asn1p_value_t *v) {
- OUT("static uint8_t defv[] = ");
+ OUT("static const uint8_t defv[] = ");
assert(v->type == ATV_STRING);
if(safe_string(v->value.string.buf, v->value.string.size)) {
@@ -2346,13 +2346,13 @@
expr->marker.flags &= ~EM_INDIRECT;
if(!out) {
if(C99_MODE) OUT(".default_value_cmp = ");
- OUT("asn_DFL_%d_cmp_%s,",
+ OUT("&asn_DFL_%d_cmp_%s,",
expr->_type_unique_index,
asn1p_itoa(expr->marker.default_value->value.v_integer));
OUT("\t/* Compare DEFAULT %s */\n",
asn1p_itoa(expr->marker.default_value->value.v_integer));
if(C99_MODE) OUT(".default_value_set = ");
- OUT("asn_DFL_%d_set_%s,",
+ OUT("&asn_DFL_%d_set_%s,",
expr->_type_unique_index,
asn1p_itoa(expr->marker.default_value->value.v_integer));
OUT("\t/* Set DEFAULT %s */\n",
@@ -2424,11 +2424,11 @@
break;
if(!out) {
if(C99_MODE) OUT(".default_value_cmp = ");
- OUT("asn_DFL_%d_cmp,\t/* Compare DEFAULT \"%s\" */\n",
+ OUT("&asn_DFL_%d_cmp,\t/* Compare DEFAULT \"%s\" */\n",
expr->_type_unique_index,
expr->marker.default_value->value.string.buf);
if(C99_MODE) OUT(".default_value_set = ");
- OUT("asn_DFL_%d_set,\t/* Set DEFAULT \"%s\" */\n",
+ OUT("&asn_DFL_%d_set,\t/* Set DEFAULT \"%s\" */\n",
expr->_type_unique_index,
expr->marker.default_value->value.string.buf);
return 1;
@@ -2462,7 +2462,7 @@
OUT("if(!nstr) return -1;\n");
OUT("memcpy(nstr, defv, sizeof(defv));\n");
OUT("\n");
- OUT("if((st = *sptr)) {\n");
+ OUT("if(st) {\n");
OUT("\tFREEMEM(st->buf);\n");
OUT("} else {\n");
OUT("\tst = (*sptr = CALLOC(1, sizeof(*st)));\n");
diff --git a/skeletons/constr_TYPE.h b/skeletons/constr_TYPE.h
index 089f891..d9d55c2 100644
--- a/skeletons/constr_TYPE.h
+++ b/skeletons/constr_TYPE.h
@@ -226,8 +226,8 @@
asn_TYPE_descriptor_t *type; /* Member type descriptor */
asn_type_selector_f *type_selector; /* IoS runtime type selector */
asn_encoding_constraints_t encoding_constraints;
- int (*default_value_set)(void **sptr); /* Set DEFAULT <value> */
int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT <value> */
+ int (*default_value_set)(void **sptr); /* Set DEFAULT <value> */
const char *name; /* ASN.1 identifier of the element */
} asn_TYPE_member_t;