From 53ac3a20b2a5493415e26e85347c026561b07a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Sun, 10 Jul 2005 05:13:09 +0000 Subject: [PATCH] make scope variables unique to avoid shadow warnings git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15614 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/asn1/gen.c | 14 ++++++++++++++ lib/asn1/gen_decode.c | 38 ++++++++++++++++++++++++-------------- lib/asn1/gen_encode.c | 24 ++++++++++++++++-------- lib/asn1/gen_length.c | 28 ++++++++++++++++------------ lib/asn1/gen_locl.h | 3 +++ 5 files changed, 73 insertions(+), 34 deletions(-) diff --git a/lib/asn1/gen.c b/lib/asn1/gen.c index 2dee1f276..4812ba3d2 100644 --- a/lib/asn1/gen.c +++ b/lib/asn1/gen.c @@ -70,6 +70,20 @@ get_filename (void) return orig_filename; } +static int unique_number; + +void +unique_reset(void) +{ + unique_number = 0; +} + +int +unique_get_next(void) +{ + return unique_number++; +} + void init_generate (const char *filename, const char *base) { diff --git a/lib/asn1/gen_decode.c b/lib/asn1/gen_decode.c index 5a52566d8..14a053b45 100644 --- a/lib/asn1/gen_decode.c +++ b/lib/asn1/gen_decode.c @@ -117,6 +117,8 @@ decode_type (const char *name, const Type *t) case TSequence: { Member *m; int tag = -1; + int fd_counter = unique_get_next(); + int fd_counter_inner = unique_get_next(); if (t->members == NULL) break; @@ -126,9 +128,10 @@ decode_type (const char *name, const Type *t) "&reallen, &l);\n" "FORW;\n" "{\n" - "int dce_fix;\n" - "if((dce_fix = fix_dce(reallen, &len)) < 0)\n" - "return ASN1_BAD_FORMAT;\n"); + "int dce_fix%d;\n" + "if((dce_fix%d = fix_dce(reallen, &len)) < 0)\n" + "return ASN1_BAD_FORMAT;\n", + fd_counter, fd_counter); for (m = t->members; m && tag != m->val; m = m->next) { char *s; @@ -180,24 +183,27 @@ decode_type (const char *name, const Type *t) "FORW;\n" "{\n" - "int dce_fix;\n" + "int dce_fix%d;\n" "oldlen = len;\n" - "if((dce_fix = fix_dce(newlen, &len)) < 0)" - "return ASN1_BAD_FORMAT;\n"); + "if((dce_fix%d = fix_dce(newlen, &len)) < 0)" + "return ASN1_BAD_FORMAT;\n", + fd_counter_inner, + fd_counter_inner); if (m->optional) fprintf (codefile, "%s = malloc(sizeof(*%s));\n" "if(%s == NULL) return ENOMEM;\n", s, s, s); decode_type (s, m->type); fprintf (codefile, - "if(dce_fix){\n" + "if(dce_fix%d){\n" "e = der_match_tag_and_length (p, len, " "(Der_class)0, (Der_type)0, 0, &reallen, &l);\n" "FORW;\n" "}else \n" "len = oldlen - newlen;\n" "}\n" - "}\n"); + "}\n", + fd_counter_inner); fprintf (codefile, "}\n"); } @@ -206,17 +212,19 @@ decode_type (const char *name, const Type *t) free (s); } fprintf(codefile, - "if(dce_fix){\n" + "if(dce_fix%d){\n" "e = der_match_tag_and_length (p, len, " "(Der_class)0, (Der_type)0, 0, &reallen, &l);\n" "FORW;\n" "}\n" - "}\n"); + "}\n", + fd_counter); break; } case TSequenceOf: { char *n; + int oldret_counter = unique_get_next(); fprintf (codefile, "e = der_match_tag_and_length (p, len, ASN1_C_UNIV, CONS, UT_Sequence," @@ -229,21 +237,22 @@ decode_type (const char *name, const Type *t) fprintf (codefile, "{\n" "size_t origlen = len;\n" - "int oldret = ret;\n" + "int oldret%d = ret;\n" "ret = 0;\n" "(%s)->len = 0;\n" "(%s)->val = NULL;\n" "while(ret < origlen) {\n" "(%s)->len++;\n" "(%s)->val = realloc((%s)->val, sizeof(*((%s)->val)) * (%s)->len);\n", - name, name, name, name, name, name, name); + oldret_counter, name, name, name, name, name, name, name); asprintf (&n, "&(%s)->val[(%s)->len-1]", name, name); decode_type (n, t->subtype); fprintf (codefile, "len = origlen - ret;\n" "}\n" - "ret += oldret;\n" - "}\n"); + "ret += oldret%d;\n" + "}\n", + oldret_counter); free (n); break; } @@ -292,6 +301,7 @@ decode_type (const char *name, const Type *t) void generate_type_decode (const Symbol *s) { + unique_reset(); fprintf (headerfile, "int " "decode_%s(const unsigned char *, size_t, %s *, size_t *);\n", diff --git a/lib/asn1/gen_encode.c b/lib/asn1/gen_encode.c index 10ab542b1..0b97dddd2 100644 --- a/lib/asn1/gen_encode.c +++ b/lib/asn1/gen_encode.c @@ -138,6 +138,7 @@ encode_type (const char *name, const Type *t) case TSequence: { Member *m; int tag = -1; + int oldret_counter = unique_get_next(); if (t->members == NULL) break; @@ -152,8 +153,9 @@ encode_type (const char *name, const Type *t) s); #if 1 fprintf (codefile, "{\n" - "int oldret = ret;\n" - "ret = 0;\n"); + "int oldret%d = ret;\n" + "ret = 0;\n", + oldret_counter); #endif encode_type (s, m->type); fprintf (codefile, @@ -163,8 +165,9 @@ encode_type (const char *name, const Type *t) m->val); #if 1 fprintf (codefile, - "ret += oldret;\n" - "}\n"); + "ret += oldret%d;\n" + "}\n", + oldret_counter); #endif if (tag == -1) tag = m->val; @@ -176,26 +179,31 @@ encode_type (const char *name, const Type *t) break; } case TSequenceOf: { + int oldret_counter = unique_get_next(); char *n; fprintf (codefile, "for(i = (%s)->len - 1; i >= 0; --i) {\n" #if 1 - "int oldret = ret;\n" + "int oldret%d = ret;\n" "ret = 0;\n", #else , #endif - name); + name, oldret_counter); asprintf (&n, "&(%s)->val[i]", name); encode_type (n, t->subtype); fprintf (codefile, #if 1 - "ret += oldret;\n" + "ret += oldret%d;\n" #endif "}\n" "e = der_put_length_and_tag (p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);\n" - "BACK;\n"); + "BACK;\n" +#if 1 + , oldret_counter +#endif + ); free (n); break; } diff --git a/lib/asn1/gen_length.c b/lib/asn1/gen_length.c index 27fd88c49..ae348c566 100644 --- a/lib/asn1/gen_length.c +++ b/lib/asn1/gen_length.c @@ -89,6 +89,7 @@ length_type (const char *name, const Type *t, const char *variable) case TSequence: { Member *m; int tag = -1; + int oldret_counter = unique_get_next(); if (t->members == NULL) break; @@ -101,11 +102,11 @@ length_type (const char *name, const Type *t, const char *variable) if (m->optional) fprintf (codefile, "if(%s)", s); fprintf (codefile, "{\n" - "int oldret = %s;\n" - "%s = 0;\n", variable, variable); + "int oldret%d = %s;\n" + "%s = 0;\n", oldret_counter, variable, variable); length_type (s, m->type, "ret"); - fprintf (codefile, "%s += 1 + length_len(%s) + oldret;\n", - variable, variable); + fprintf (codefile, "%s += 1 + length_len(%s) + oldret%d;\n", + variable, variable, oldret_counter); fprintf (codefile, "}\n"); if (tag == -1) tag = m->val; @@ -117,26 +118,28 @@ length_type (const char *name, const Type *t, const char *variable) } case TSequenceOf: { char *n; + int oldret_counter = unique_get_next(); + int oldret_counter_inner = unique_get_next(); fprintf (codefile, "{\n" - "int oldret = %s;\n" + "int oldret%d = %s;\n" "int i;\n" "%s = 0;\n", - variable, variable); + oldret_counter, variable, variable); fprintf (codefile, "for(i = (%s)->len - 1; i >= 0; --i){\n", name); - fprintf (codefile, "int oldret = %s;\n" - "%s = 0;\n", variable, variable); + fprintf (codefile, "int oldret%d = %s;\n" + "%s = 0;\n", oldret_counter_inner, variable, variable); asprintf (&n, "&(%s)->val[i]", name); length_type(n, t->subtype, variable); - fprintf (codefile, "%s += oldret;\n", - variable); + fprintf (codefile, "%s += oldret%d;\n", + variable, oldret_counter_inner); fprintf (codefile, "}\n"); fprintf (codefile, - "%s += 1 + length_len(%s) + oldret;\n" - "}\n", variable, variable); + "%s += 1 + length_len(%s) + oldret%d;\n" + "}\n", variable, variable, oldret_counter); free(n); break; } @@ -167,6 +170,7 @@ length_type (const char *name, const Type *t, const char *variable) void generate_type_length (const Symbol *s) { + unique_reset(); fprintf (headerfile, "size_t length_%s(const %s *);\n", s->gen_name, s->gen_name); diff --git a/lib/asn1/gen_locl.h b/lib/asn1/gen_locl.h index 1d9459d15..35d378046 100644 --- a/lib/asn1/gen_locl.h +++ b/lib/asn1/gen_locl.h @@ -63,6 +63,9 @@ void generate_type_copy (const Symbol *s); void generate_type_maybe (const Symbol *s); void generate_glue (const Symbol *s); +void unique_reset(void); +int unique_get_next(void); + void init_generate (const char *filename, const char *basename); const char *get_filename (void); void close_generate(void);