try to avoid aliasing of pointers enum {} vs int
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21503 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -262,12 +262,14 @@ decode_type (const char *name, const Type *t, int optional,
|
|||||||
}
|
}
|
||||||
case TInteger:
|
case TInteger:
|
||||||
if(t->members) {
|
if(t->members) {
|
||||||
char *s;
|
fprintf(codefile,
|
||||||
asprintf(&s, "(int*)%s", name);
|
"{\n"
|
||||||
if (s == NULL)
|
"int enumint;\n");
|
||||||
errx (1, "out of memory");
|
decode_primitive ("integer", "&enumint", forwstr);
|
||||||
decode_primitive ("integer", s, forwstr);
|
fprintf(codefile,
|
||||||
free(s);
|
"*%s = enumint;\n"
|
||||||
|
"}\n",
|
||||||
|
name);
|
||||||
} else if (t->range == NULL) {
|
} else if (t->range == NULL) {
|
||||||
decode_primitive ("heim_integer", name, forwstr);
|
decode_primitive ("heim_integer", name, forwstr);
|
||||||
} else if (t->range->min == INT_MIN && t->range->max == INT_MAX) {
|
} else if (t->range->min == INT_MIN && t->range->max == INT_MAX) {
|
||||||
|
@@ -121,12 +121,12 @@ encode_type (const char *name, const Type *t, const char *tmpstr)
|
|||||||
break;
|
break;
|
||||||
case TInteger:
|
case TInteger:
|
||||||
if(t->members) {
|
if(t->members) {
|
||||||
char *s;
|
fprintf(codefile,
|
||||||
asprintf(&s, "(const int*)%s", name);
|
"{\n"
|
||||||
if(s == NULL)
|
"int enumint = (int)*%s;\n",
|
||||||
errx(1, "out of memory");
|
name);
|
||||||
encode_primitive ("integer", s);
|
encode_primitive ("integer", "&enumint");
|
||||||
free(s);
|
fprintf(codefile, "}\n;");
|
||||||
} else if (t->range == NULL) {
|
} else if (t->range == NULL) {
|
||||||
encode_primitive ("heim_integer", name);
|
encode_primitive ("heim_integer", name);
|
||||||
} else if (t->range->min == INT_MIN && t->range->max == INT_MAX) {
|
} else if (t->range->min == INT_MIN && t->range->max == INT_MAX) {
|
||||||
|
@@ -72,12 +72,11 @@ length_type (const char *name, const Type *t,
|
|||||||
break;
|
break;
|
||||||
case TInteger:
|
case TInteger:
|
||||||
if(t->members) {
|
if(t->members) {
|
||||||
char *s;
|
fprintf(codefile,
|
||||||
asprintf(&s, "(const int*)%s", name);
|
"{\n"
|
||||||
if(s == NULL)
|
"int enumint = *%s;\n", name);
|
||||||
errx (1, "out of memory");
|
length_primitive ("integer", "&enumint", variable);
|
||||||
length_primitive ("integer", s, variable);
|
fprintf(codefile, "}\n");
|
||||||
free(s);
|
|
||||||
} else if (t->range == NULL) {
|
} else if (t->range == NULL) {
|
||||||
length_primitive ("heim_integer", name, variable);
|
length_primitive ("heim_integer", name, variable);
|
||||||
} else if (t->range->min == INT_MIN && t->range->max == INT_MAX) {
|
} else if (t->range->min == INT_MIN && t->range->max == INT_MAX) {
|
||||||
|
Reference in New Issue
Block a user