Issue #15592. Fix regression: subprocess.communicate() breaks on no input with universal newlines true.

Patch by Chris Jerdonek.
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 7885ba3..35f6f96 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -1536,6 +1536,17 @@
             return (stdout, stderr)
 
 
+        def _save_input(self, input):
+            # This method is called from the _communicate_with_*() methods
+            # so that if we time out while communicating, we can continue
+            # sending input if we retry.
+            if self.stdin and self._input is None:
+                self._input_offset = 0
+                self._input = input
+                if self.universal_newlines and input is not None:
+                    self._input = self._input.encode(self.stdin.encoding)
+
+
         def _communicate_with_poll(self, input, endtime, orig_timeout):
             stdout = None # Return
             stderr = None # Return
@@ -1572,13 +1583,7 @@
                 register_and_append(self.stderr, select_POLLIN_POLLPRI)
                 stderr = self._fd2output[self.stderr.fileno()]
 
-            # Save the input here so that if we time out while communicating,
-            # we can continue sending input if we retry.
-            if self.stdin and self._input is None:
-                self._input_offset = 0
-                self._input = input
-                if self.universal_newlines:
-                    self._input = self._input.encode(self.stdin.encoding)
+            self._save_input(input)
 
             while self._fd2file:
                 timeout = self._remaining_time(endtime)
@@ -1632,11 +1637,7 @@
                 if self.stderr:
                     self._read_set.append(self.stderr)
 
-            if self.stdin and self._input is None:
-                self._input_offset = 0
-                self._input = input
-                if self.universal_newlines:
-                    self._input = self._input.encode(self.stdin.encoding)
+            self._save_input(input)
 
             stdout = None # Return
             stderr = None # Return