From 0336e1fe8cd1fc7c7d6d710261305111fbbe1d52 Mon Sep 17 00:00:00 2001
From: Raymond Hettinger <python@rcn.com>
Date: Thu, 23 Sep 2004 06:43:25 +0000
Subject: [PATCH] Use local variables in StringIO.write(). Makes it easier on
 the eyes and a bit more snappy.

---
 Lib/StringIO.py | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/Lib/StringIO.py b/Lib/StringIO.py
index 1b9fa7b3da..a43e5d44c5 100644
--- a/Lib/StringIO.py
+++ b/Lib/StringIO.py
@@ -215,21 +215,22 @@ class StringIO:
         # Force s to be a string or unicode
         if not isinstance(s, basestring):
             s = str(s)
-        if self.pos == self.len:
+        spos = self.pos
+        slen = self.len
+        if spos == slen:
             self.buflist.append(s)
-            self.len = self.pos = self.pos + len(s)
+            self.len = self.pos = slen = spos = spos + len(s)
             return
-        if self.pos > self.len:
-            self.buflist.append('\0'*(self.pos - self.len))
-            self.len = self.pos
-        newpos = self.pos + len(s)
-        if self.pos < self.len:
+        if spos > slen:
+            self.buflist.append('\0'*(spos - slen))
+            slen = spos
+        newpos = spos + len(s)
+        if spos < slen:
             if self.buflist:
                 self.buf += ''.join(self.buflist)
-                self.buflist = []
-            self.buflist = [self.buf[:self.pos], s, self.buf[newpos:]]
+            self.buflist = [self.buf[:spos], s, self.buf[newpos:]]
             self.buf = ''
-            if newpos > self.len:
+            if newpos > slen:
                 self.len = newpos
         else:
             self.buflist.append(s)
-- 
2.40.0