]> granicus.if.org Git - python/commitdiff
Fix for bug #480188: printing unicode objects
authorMarc-André Lemburg <mal@egenix.com>
Tue, 20 Nov 2001 15:17:25 +0000 (15:17 +0000)
committerMarc-André Lemburg <mal@egenix.com>
Tue, 20 Nov 2001 15:17:25 +0000 (15:17 +0000)
Lib/test/output/test_unicode
Lib/test/test_unicode.py
Python/ceval.c

index 82ed240075159cdd08094883f050b3b0545741d5..2930d6451762ea489c2c5bb145c0b18ab1217ad3 100644 (file)
@@ -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.
index eff11cfa6a4e218252f48e8126605514aca36982..b859fbb77e54ed42fe0b4627b19c8fd456714cc1 100644 (file)
@@ -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.'
+
index b70773434965600f004d821a4104e1b3b9a0effc..21ee3dbb96c9dfba405950273c752991c8c22154 100644 (file)
@@ -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);