Fix for bug #480188: printing unicode objects

This commit is contained in:
Marc-André Lemburg 2001-11-20 15:17:25 +00:00
parent 4586d2c91c
commit 0c4d8d05a8
3 changed files with 39 additions and 3 deletions

View 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.

View 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.'

View 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);