asn1: code generators that left bit shift .gt. 31 must use 1ULL

The code generators were shifting "1LU" by (<< 32) and (<< 63) which
are undefined operations for a 32-bit integer.  To ensure the integer
is 64-bit use "1ULL".

Change-Id: I062cae5638139a9fe51563f64b1964f87e2f49e3
This commit is contained in:
Jeffrey Altman
2020-05-30 18:07:43 -04:00
committed by Jeffrey Altman
parent ad2a352600
commit 136abf55b7
3 changed files with 5 additions and 5 deletions

View File

@@ -384,7 +384,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval,
decode_type (s, m->type, 0, NULL, forwstr, m->gen_name, NULL, depth + 1);
free (s);
fprintf(codefile, "members |= (1LU << %u);\n", memno);
fprintf(codefile, "members |= (1ULL << %u);\n", memno);
memno++;
fprintf(codefile, "break;\n");
}
@@ -400,7 +400,7 @@ decode_type(const char *name, const Type *t, int optional, struct value *defval,
if (asprintf (&s, "%s->%s", name, m->gen_name) < 0 || s == NULL)
errx(1, "malloc");
fprintf(codefile, "if((members & (1LU << %u)) == 0)\n", memno);
fprintf(codefile, "if((members & (1ULL << %u)) == 0)\n", memno);
if(m->optional)
fprintf(codefile, "%s = NULL;\n", s);
else if(m->defval)