diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2005-05-30 12:15:56 +0300 |
---|---|---|
committer | H.Merijn Brand <h.m.brand@xs4all.nl> | 2005-05-30 10:19:09 +0000 |
commit | 3c0f78ca4f737d7b40beecbfdca31b9f7e3fb952 (patch) | |
tree | 0c5cc6b5b5d5060f76ddafe25f0051d2ff6c4b9e /sv.c | |
parent | 4ab2a30b7819ac6edb69c69e044edaf44dd8119f (diff) | |
download | perl-3c0f78ca4f737d7b40beecbfdca31b9f7e3fb952.tar.gz |
Re: updated tru64 cc [PATCH]es (Re: [PATCH]es: Tru64/blead)
Message-ID: <429AAF9C.30503@gmail.com>
p4raw-id: //depot/perl@24627
Diffstat (limited to 'sv.c')
-rw-r--r-- | sv.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -11219,6 +11219,9 @@ Perl_ss_dup(pTHX_ PerlInterpreter *proto_perl, CLONE_PARAMS* param) void (*dptr) (void*); void (*dxptr) (pTHX_ void*); OP *o; + /* Unions for circumventing strict ANSI C89 casting rules. */ + union { void *vptr; void (*dptr)(void*); } u1, u2; + union { void *vptr; void (*dxptr)(pTHX_ void*); } u3, u4; Newz(54, nss, max, ANY); @@ -11390,13 +11393,17 @@ Perl_ss_dup(pTHX_ PerlInterpreter *proto_perl, CLONE_PARAMS* param) ptr = POPPTR(ss,ix); TOPPTR(nss,ix) = any_dup(ptr, proto_perl); /* XXX quite arbitrary */ dptr = POPDPTR(ss,ix); - TOPDPTR(nss,ix) = (void (*)(void*))any_dup((void *)dptr, proto_perl); + u1.dptr = dptr; + u2.vptr = any_dup(u1.vptr, proto_perl); + TOPDPTR(nss,ix) = u2.dptr; break; case SAVEt_DESTRUCTOR_X: ptr = POPPTR(ss,ix); TOPPTR(nss,ix) = any_dup(ptr, proto_perl); /* XXX quite arbitrary */ dxptr = POPDXPTR(ss,ix); - TOPDXPTR(nss,ix) = (void (*)(pTHX_ void*))any_dup((void *)dxptr, proto_perl); + u3.dxptr = dxptr; + u4.vptr = any_dup(u3.vptr, proto_perl);; + TOPDXPTR(nss,ix) = u4.dxptr; break; case SAVEt_REGCONTEXT: case SAVEt_ALLOC: |