From 0c4d8d05a8b10c8c611eae0fbe70898050f12ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lemburg?= Date: Tue, 20 Nov 2001 15:17:25 +0000 Subject: Fix for bug #480188: printing unicode objects --- Lib/test/output/test_unicode | 13 +++++++++++++ Lib/test/test_unicode.py | 13 +++++++++++++ Python/ceval.c | 16 +++++++++++++--- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/Lib/test/output/test_unicode b/Lib/test/output/test_unicode index 82ed240..2930d64 100644 --- a/Lib/test/output/test_unicode +++ b/Lib/test/output/test_unicode @@ -6,3 +6,16 @@ Testing builtin unicode()... done. Testing builtin codecs... done. Testing standard mapping codecs... 0-127... 128-255... done. Testing Unicode string concatenation... done. +Testing Unicode printing... abc +abc def +abc def +abc def +abc + +abc +abc +def + +def + +done. diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index eff11cf..b859fbb 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -644,3 +644,16 @@ verify((u"abc" "def") == u"abcdef") verify((u"abc" u"def" "ghi") == u"abcdefghi") verify(("abc" "def" u"ghi") == u"abcdefghi") print 'done.' + +print 'Testing Unicode printing...', +print u'abc' +print u'abc', u'def' +print u'abc', 'def' +print 'abc', u'def' +print u'abc\n' +print u'abc\n', +print u'abc\n', +print u'def\n' +print u'def\n' +print 'done.' + diff --git a/Python/ceval.c b/Python/ceval.c index b707734..21ee3db 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1349,14 +1349,24 @@ eval_frame(PyFrameObject *f) err = PyFile_WriteString(" ", w); if (err == 0) err = PyFile_WriteObject(v, w, Py_PRINT_RAW); - if (err == 0 && PyString_Check(v)) { + if (err == 0) { /* XXX move into writeobject() ? */ - char *s = PyString_AsString(v); - int len = PyString_Size(v); + if (PyString_Check(v)) { + char *s = PyString_AS_STRING(v); + int len = PyString_GET_SIZE(v); if (len > 0 && isspace(Py_CHARMASK(s[len-1])) && s[len-1] != ' ') PyFile_SoftSpace(w, 0); + } + else if (PyUnicode_Check(v)) { + Py_UNICODE *s = PyUnicode_AS_UNICODE(v); + int len = PyUnicode_GET_SIZE(v); + if (len > 0 && + Py_UNICODE_ISSPACE(s[len-1]) && + s[len-1] != ' ') + PyFile_SoftSpace(w, 0); + } } Py_DECREF(v); Py_XDECREF(stream); -- cgit v0.12