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:

committed by
Jeffrey Altman

parent
ad2a352600
commit
136abf55b7
@@ -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)
|
||||
|
Reference in New Issue
Block a user