summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-06-15 03:35:38 (GMT)
committerGuido van Rossum <guido@python.org>2007-06-15 03:35:38 (GMT)
commitaa588c4699877fd812c59debee71aa704b8f6dd4 (patch)
treefbade3f8b63d8b5cc68bd42664466c4cd5195981
parenta092947d26758d39c30c42eb62bdaf02776e7913 (diff)
downloadcpython-aa588c4699877fd812c59debee71aa704b8f6dd4.zip
cpython-aa588c4699877fd812c59debee71aa704b8f6dd4.tar.gz
cpython-aa588c4699877fd812c59debee71aa704b8f6dd4.tar.bz2
Fix some problems introduced by the str8 repr change.
-rw-r--r--Lib/pickle.py3
-rw-r--r--Lib/test/test_popen.py4
-rw-r--r--Modules/cPickle.c4
3 files changed, 9 insertions, 2 deletions
diff --git a/Lib/pickle.py b/Lib/pickle.py
index 9919aa4..27f7eca 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -501,7 +501,8 @@ class Pickler:
else:
self.write(BINSTRING + pack("<i", n) + bytes(obj))
else:
- self.write(STRING + bytes(repr(obj)) + b'\n')
+ # Strip leading 's' due to repr() of str8() returning s'...'
+ self.write(STRING + bytes(repr(obj).lstrip("s")) + b'\n')
self.memoize(obj)
dispatch[str8] = save_string
diff --git a/Lib/test/test_popen.py b/Lib/test/test_popen.py
index 2457396..fba3f41 100644
--- a/Lib/test/test_popen.py
+++ b/Lib/test/test_popen.py
@@ -18,8 +18,10 @@ if ' ' in python:
python = '"' + python + '"' # quote embedded space for cmdline
class PopenTest(unittest.TestCase):
+
def _do_test_commandline(self, cmdline, expected):
- cmd = '%s -c "import sys; print(sys.argv)" %s' % (python, cmdline)
+ cmd = '%s -c "import sys; print(list(map(str, sys.argv)))" %s'
+ cmd = cmd % (python, cmdline)
data = os.popen(cmd).read()
got = eval(data)[1:] # strip off argv[0]
self.assertEqual(got, expected)
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index f0b3c8a..0085560 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -1085,6 +1085,10 @@ save_string(Picklerobject *self, PyObject *args, int doput)
goto err;
repr_str = PyString_AS_STRING((PyStringObject *)repr);
+ /* Strip leading 's' due to repr() of str8() returning s'...' */
+ if (repr_str[0] == 's')
+ repr_str++;
+
if (self->write_func(self, &string, 1) < 0)
goto err;