@@ -512,7 +512,7 @@ private function readInput($inputStream, Question $question)
512512$ cp =$ this ->setIOCodepage ();
513513$ ret =fgets ($ inputStream ,4096 );
514514
515- return false !== $ ret ? $ this ->resetIOCodepage ($ cp ,$ ret ) : false ;
515+ return $ this ->resetIOCodepage ($ cp ,$ ret );
516516 }
517517
518518$ multiLineStreamReader =$ this ->cloneInputStream ($ inputStream );
@@ -533,7 +533,7 @@ private function readInput($inputStream, Question $question)
533533 }
534534
535535/**
536- *Set console I/O to the host code page.
536+ *Sets console I/O to the host code page.
537537 *
538538 * @return int Previous code page in IBM/EBCDIC format
539539 */
@@ -550,13 +550,20 @@ private function setIOCodepage(): int
550550 }
551551
552552/**
553- * Set console I/O to the specified code page and convert the user input.
553+ * Sets console I/O to the specified code page and converts the user input.
554+ *
555+ * @param string|false $input
556+ *
557+ * @return string|false
554558 */
555- private function resetIOCodepage (int $ cp ,string $ input ): string
559+ private function resetIOCodepage (int $ cp ,$ input )
556560 {
557- if (\function_exists ( ' sapi_windows_cp_set ' ) && 0 < $ cp ) {
561+ if (0 !== $ cp ) {
558562sapi_windows_cp_set ($ cp );
559- $ input =sapi_windows_cp_conv (sapi_windows_cp_get ('oem ' ),$ cp ,$ input );
563+
564+ if (false !==$ input &&'' !==$ input ) {
565+ $ input =sapi_windows_cp_conv (sapi_windows_cp_get ('oem ' ),$ cp ,$ input );
566+ }
560567 }
561568
562569return $ input ;