From: Sam Ding Date: Fri, 23 Feb 2018 15:11:18 +0000 (-0500) Subject: Fix #75873: pcntl_wexitstatus returns incorrect on Big_Endian platform (s390x) X-Git-Tag: php-7.2.4RC1~51^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=78c1ef2adbd3f9383659326cc85e7f45fef639ae;p=php Fix #75873: pcntl_wexitstatus returns incorrect on Big_Endian platform (s390x) Cf. https://github.com/php/php-src/pull/3141. --- diff --git a/NEWS b/NEWS index 6c4e537239..7dcc0b8473 100644 --- a/NEWS +++ b/NEWS @@ -36,6 +36,10 @@ PHP NEWS - OpenSSL: . Fixed openssl_* arginfos. (carusogabriel) +- PCNTL: + . Fixed bug #75873 (pcntl_wexitstatus returns incorrect on Big_Endian platform + (s390x)). (Sam Ding) + - PGSQL: . Fixed #75838 (Memory leak in pg_escape_bytea()). (ard_1 at mail dot ru) diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c index ef05cc35a3..886099c573 100644 --- a/ext/pcntl/pcntl.c +++ b/ext/pcntl/pcntl.c @@ -761,9 +761,10 @@ PHP_FUNCTION(pcntl_wifexited) return; } - if (WIFEXITED(status_word)) + if (WIFEXITED((int)status_word)) RETURN_TRUE; #endif + RETURN_FALSE; } /* }}} */ @@ -779,7 +780,7 @@ PHP_FUNCTION(pcntl_wifstopped) return; } - if (WIFSTOPPED(status_word)) + if (WIFSTOPPED((int)status_word)) RETURN_TRUE; #endif RETURN_FALSE; @@ -797,7 +798,7 @@ PHP_FUNCTION(pcntl_wifsignaled) return; } - if (WIFSIGNALED(status_word)) + if (WIFSIGNALED((int)status_word)) RETURN_TRUE; #endif RETURN_FALSE; @@ -814,7 +815,7 @@ PHP_FUNCTION(pcntl_wifcontinued) return; } - if (WIFCONTINUED(status_word)) + if (WIFCONTINUED((int)status_word)) RETURN_TRUE; #endif RETURN_FALSE; @@ -833,7 +834,7 @@ PHP_FUNCTION(pcntl_wexitstatus) return; } - RETURN_LONG(WEXITSTATUS(status_word)); + RETURN_LONG(WEXITSTATUS((int)status_word)); #else RETURN_FALSE; #endif @@ -851,7 +852,7 @@ PHP_FUNCTION(pcntl_wtermsig) return; } - RETURN_LONG(WTERMSIG(status_word)); + RETURN_LONG(WTERMSIG((int)status_word)); #else RETURN_FALSE; #endif @@ -869,7 +870,7 @@ PHP_FUNCTION(pcntl_wstopsig) return; } - RETURN_LONG(WSTOPSIG(status_word)); + RETURN_LONG(WSTOPSIG((int)status_word)); #else RETURN_FALSE; #endif