diff options
author | Brian Childs <brian@rentec.com> | 2013-12-03 06:33:41 +0100 |
---|---|---|
committer | Tony Cook <tony@develop-help.com> | 2013-12-09 14:31:00 +1100 |
commit | 64d7628235943ff18939a1ff98ace513aeb5260c (patch) | |
tree | 4a66ef3c015dffce9b6181e2a6401fdd044bf184 /doio.c | |
parent | 1c6ce212d37a2a17424675e94afb035a9a446f9f (diff) | |
download | perl-64d7628235943ff18939a1ff98ace513aeb5260c.tar.gz |
Fixes the case where on 64bit big-endian boxes, calls to semctl(id,semnum,SETVAL,$wantedval) will ignore the passed in $wantedval, and always use 0
Diffstat (limited to 'doio.c')
-rw-r--r-- | doio.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -2155,11 +2155,16 @@ Perl_do_ipcctl(pTHX_ I32 optype, SV **mark, SV **sp) #ifdef Semctl union semun unsemds; + if(cmd == SETVAL) { + unsemds.val = PTR2nat(a); + } + else { #ifdef EXTRA_F_IN_SEMUN_BUF - unsemds.buff = (struct semid_ds *)a; + unsemds.buff = (struct semid_ds *)a; #else - unsemds.buf = (struct semid_ds *)a; + unsemds.buf = (struct semid_ds *)a; #endif + } ret = Semctl(id, n, cmd, unsemds); #else /* diag_listed_as: sem%s not implemented */ |