From ef906991fd27588881beada7200cd0849409f10d Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Sat, 8 Jan 2022 17:13:56 +1100 Subject: [PATCH] asn1: don't include decoration header for void * If the decorated external type is a void *, don't include the decoration header in the ASN.1 header, only in the template implementation. This allows the copy constructor and destructor to be implementation private. --- lib/asn1/gen.c | 1 + lib/asn1/gen_template.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/lib/asn1/gen.c b/lib/asn1/gen.c index 47c2f2ecf..1c040cc52 100644 --- a/lib/asn1/gen.c +++ b/lib/asn1/gen.c @@ -1641,6 +1641,7 @@ declare_type(const Symbol *s, Type *t, int typedefp) getnewbasename(&newbasename, TRUE, s->gen_name, s->gen_name); fprintf(headerfile, "struct %s %s;\n", newbasename, s->gen_name); if (decorate_type(newbasename, &deco) && deco.header_name + && !deco.void_star && deco.header_name[0]) { fprintf(headerfile, "#include %s\n", deco.header_name); free(deco.field_type); diff --git a/lib/asn1/gen_template.c b/lib/asn1/gen_template.c index 1becbd24d..1a0ce412a 100644 --- a/lib/asn1/gen_template.c +++ b/lib/asn1/gen_template.c @@ -1528,6 +1528,8 @@ generate_template(const Symbol *s) } if (decorate_type(s->gen_name, &deco) && deco.ext) { + if (deco.void_star && deco.header_name[0]) + fprintf(f, "#include %s\n", deco.header_name); fprintf(f, "static const struct asn1_type_func asn1_extern_%s_%s = {\n" "\t(asn1_type_encode)0,\n"