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

@@ -53,7 +53,7 @@ generate_2int (const Type *t, const char *gen_name)
gen_name, gen_name);
HEIM_TAILQ_FOREACH(m, t->members, members) {
fprintf (codefile, "if(f.%s) r |= (1LU << %d);\n",
fprintf (codefile, "if(f.%s) r |= (1ULL << %d);\n",
m->gen_name, m->val);
}
fprintf (codefile, "return r;\n"
@@ -114,7 +114,7 @@ generate_units (const Type *t, const char *gen_name)
if(t->members) {
HEIM_TAILQ_FOREACH_REVERSE(m, t->members, memhead, members) {
fprintf (codefile,
"\t{\"%s\",\t1LU << %d},\n", m->name, m->val);
"\t{\"%s\",\t1ULL << %d},\n", m->name, m->val);
}
}