diff --git a/lib/asn1/gen_template.c b/lib/asn1/gen_template.c index 3325bb927..77f2c35f8 100644 --- a/lib/asn1/gen_template.c +++ b/lib/asn1/gen_template.c @@ -549,13 +549,15 @@ template_members(struct templatehead *temp, const char *basetype, const char *na case TNull: break; case TBitString: { - struct templatehead template = ASN1_TAILQ_HEAD_INITIALIZER(template); + struct templatehead template; struct template *q; Member *m; size_t count = 0, i; char *bname = NULL; FILE *f = get_code_file(); + ASN1_TAILQ_INIT(&template); + if (ASN1_TAILQ_EMPTY(t->members)) { add_line(temp, "{ A1_PARSE_T(A1T_HEIM_BIT_STRING), %s, NULL }", poffset); break; @@ -685,7 +687,7 @@ template_members(struct templatehead *temp, const char *basetype, const char *na break; } case TChoice: { - struct templatehead template = ASN1_TAILQ_HEAD_INITIALIZER(template); + struct templatehead template; struct template *q; size_t count = 0, i; char *tname = NULL; @@ -694,6 +696,8 @@ template_members(struct templatehead *temp, const char *basetype, const char *na int ellipsis = 0; char *e; + ASN1_TAILQ_INIT(&template); + if (asprintf(&tname, "asn1_choice_%s_%s%x", basetype, name ? name : "", (unsigned int)(uintptr_t)t) < 0 || tname == NULL) errx(1, "malloc");