From: Christoph M. Becker Date: Sun, 31 May 2020 11:28:09 +0000 (+0200) Subject: Fix #79650: php-win.exe 100% cpu lockup X-Git-Tag: php-7.3.20RC1~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=923c45bdcaebf317ce84a4bfb3fa39beae1bf952;p=php Fix #79650: php-win.exe 100% cpu lockup As of PHP 7.3.0, `sapi_cli_single_write()` is supposed to return `< 0` on failure, but `fwrite()` returns a `size_t`, and signals error by setting the stream's error indicator. We have to cater to that. --- diff --git a/NEWS b/NEWS index e41d3be4ea..e73dbc5867 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 7.3.20 +- Core: + . Fixed bug #79650 (php-win.exe 100% cpu lockup). (cmb) ?? ??? ????, PHP 7.3.19 diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c index 342c5e5feb..2b6ace754c 100644 --- a/sapi/cli/php_cli.c +++ b/sapi/cli/php_cli.c @@ -279,6 +279,9 @@ PHP_CLI_API ssize_t sapi_cli_single_write(const char *str, size_t str_length) /* } while (ret <= 0 && errno == EAGAIN && sapi_cli_select(STDOUT_FILENO)); #else ret = fwrite(str, 1, MIN(str_length, 16384), stdout); + if (ret == 0 && ferror(stdout)) { + return -1; + } #endif return ret; }