diff options
author | Guido van Rossum <guido@python.org> | 2007-06-15 03:35:38 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-06-15 03:35:38 (GMT) |
commit | aa588c4699877fd812c59debee71aa704b8f6dd4 (patch) | |
tree | fbade3f8b63d8b5cc68bd42664466c4cd5195981 | |
parent | a092947d26758d39c30c42eb62bdaf02776e7913 (diff) | |
download | cpython-aa588c4699877fd812c59debee71aa704b8f6dd4.zip cpython-aa588c4699877fd812c59debee71aa704b8f6dd4.tar.gz cpython-aa588c4699877fd812c59debee71aa704b8f6dd4.tar.bz2 |
Fix some problems introduced by the str8 repr change.
-rw-r--r-- | Lib/pickle.py | 3 | ||||
-rw-r--r-- | Lib/test/test_popen.py | 4 | ||||
-rw-r--r-- | Modules/cPickle.c | 4 |
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; |