strict aliasing rules

git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1122 59561ff5-6e30-0410-9f3c-9617f08c8826
This commit is contained in:
vlm 2006-07-27 11:46:25 +00:00
parent 4193d9dad7
commit 170e42c6eb
4 changed files with 11 additions and 6 deletions

View File

@ -19,6 +19,7 @@ check(enum encoding_type type, char *tagname, char *xmlbuf, char *verify) {
int verlen = verify ? strlen(verify) : 0;
asn_TYPE_descriptor_t *td = &asn_DEF_OCTET_STRING;
OCTET_STRING_t *st = 0;
OCTET_STRING_t **stp = &st;
asn_dec_rval_t rc;
xer_type_decoder_f *decoder = 0;
@ -35,7 +36,7 @@ check(enum encoding_type type, char *tagname, char *xmlbuf, char *verify) {
break;
}
rc = decoder(0, td, (void **)&st, tagname, xmlbuf, xmllen);
rc = decoder(0, td, (void **)stp, tagname, xmlbuf, xmllen);
printf("[%s] => [%s]:%d vs [%s]:%d, code %d\n",
xmlbuf,
st ? (const char *)st->buf : "", st ? st->size : 0,

View File

@ -245,13 +245,14 @@ static void check_parse(const char *oid_txt, int retval) {
static void check_xer(int expect_arcs, char *xer) {
asn_dec_rval_t rc;
RELATIVE_OID_t *st = 0;
RELATIVE_OID_t **stp = &st;
long arcs[10];
int ret;
int i;
printf("[%s] => ", xer); fflush(stdout);
rc = asn_DEF_RELATIVE_OID.xer_decoder(0,
&asn_DEF_RELATIVE_OID, (void **)&st, "t",
&asn_DEF_RELATIVE_OID, (void **)stp, "t",
xer, strlen(xer));
if(expect_arcs == -1) {
if(rc.code != RC_OK)

View File

@ -152,6 +152,8 @@ check_xer(int fuzzy, double orig_value) {
REAL_t st;
REAL_t *newst0 = 0;
REAL_t *newst1 = 0;
REAL_t **newst0p = &newst0;
REAL_t **newst1p = &newst1;
double value0, value1;
int ret;
@ -176,12 +178,12 @@ check_xer(int fuzzy, double orig_value) {
reconstr_lens[0], reconstructed[0]
);
rc = xer_decode(0, &asn_DEF_REAL, (void **)&newst0,
rc = xer_decode(0, &asn_DEF_REAL, (void **)newst0p,
reconstructed[0], reconstr_lens[0]);
assert(rc.code == RC_OK);
assert(rc.consumed < reconstr_lens[0]);
rc = xer_decode(0, &asn_DEF_REAL, (void **)&newst1,
rc = xer_decode(0, &asn_DEF_REAL, (void **)newst1p,
reconstructed[1], reconstr_lens[1]);
assert(rc.code == RC_OK);
assert(rc.consumed == reconstr_lens[1]);

View File

@ -39,6 +39,7 @@ static void
check(int size) {
OCTET_STRING_t *os;
OCTET_STRING_t *nos = 0;
OCTET_STRING_t **nosp = &nos;
asn_enc_rval_t erval;
asn_dec_rval_t rval;
int i;
@ -61,7 +62,7 @@ check(int size) {
assert(erval.encoded == buf_off);
assert(buf_off > size);
rval = ber_decode(0, &asn_DEF_OCTET_STRING, (void **)&nos, buf, buf_off);
rval = ber_decode(0, &asn_DEF_OCTET_STRING, (void **)nosp, buf, buf_off);
assert(rval.code == RC_OK);
assert(rval.consumed == buf_off);
@ -116,7 +117,7 @@ main() {
if(sizeof(tlv_len) <= 4) {
ret = ber_fetch_length(0, buf3, sizeof(buf3), &tlv_len);
printf("ret=%ld\n", (long)ret);
printf("len=0x%x\n", (long)tlv_len);
printf("len=0x%x\n", (int)tlv_len);
assert(ret == -1);
}
if(sizeof(tlv_len) <= 8) {