[Python-checkins] CVS: python/dist/src/Objects object.c,2.124.4.3,2.124.4.4 stringobject.c,2.103.2.2,2.103.2.3
Guido van Rossum
gvanrossum@users.sourceforge.net
Wed, 02 May 2001 14:24:02 -0700
Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv10773
Modified Files:
Tag: descr-branch
object.c stringobject.c
Log Message:
Apply printing fixes from trunk.
Index: object.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/object.c,v
retrieving revision 2.124.4.3
retrieving revision 2.124.4.4
diff -C2 -r2.124.4.3 -r2.124.4.4
*** object.c 2001/04/27 21:32:11 2.124.4.3
--- object.c 2001/05/02 21:24:00 2.124.4.4
***************
*** 197,221 ****
op->ob_refcnt, op);
else if (op->ob_type->tp_print == NULL) {
! if ((flags & Py_PRINT_RAW)
! ? (op->ob_type->tp_str == NULL)
! : (op->ob_type->tp_repr == NULL))
! {
! fprintf(fp, "<%s object at %p>",
! op->ob_type->tp_name, op);
! }
else {
! PyObject *s;
! if (flags & Py_PRINT_RAW)
! s = PyObject_Str(op);
! else
! s = PyObject_Repr(op);
! if (s == NULL)
! ret = -1;
! else {
! ret = PyObject_Print(s, fp,
! Py_PRINT_RAW);
! }
! Py_XDECREF(s);
}
}
else
--- 197,211 ----
op->ob_refcnt, op);
else if (op->ob_type->tp_print == NULL) {
! PyObject *s;
! if (flags & Py_PRINT_RAW)
! s = PyObject_Str(op);
! else
! s = PyObject_Repr(op);
! if (s == NULL)
! ret = -1;
else {
! ret = PyObject_Print(s, fp, Py_PRINT_RAW);
}
+ Py_XDECREF(s);
}
else
***************
*** 302,321 ****
if (v == NULL)
return PyString_FromString("<NULL>");
! else if (PyString_Check(v)) {
Py_INCREF(v);
return v;
- }
- else if (v->ob_type->tp_str != NULL)
- res = (*v->ob_type->tp_str)(v);
- else {
- PyObject *func;
- if (!PyInstance_Check(v) ||
- (func = PyObject_GetAttrString(v, "__str__")) == NULL) {
- PyErr_Clear();
- return PyObject_Repr(v);
- }
- res = PyEval_CallObject(func, (PyObject *)NULL);
- Py_DECREF(func);
}
if (res == NULL)
return NULL;
--- 292,303 ----
if (v == NULL)
return PyString_FromString("<NULL>");
! if (PyString_Check(v)) {
Py_INCREF(v);
return v;
}
+ if (v->ob_type->tp_str == NULL)
+ return PyObject_Repr(v);
+
+ res = (*v->ob_type->tp_str)(v);
if (res == NULL)
return NULL;
Index: stringobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/stringobject.c,v
retrieving revision 2.103.2.2
retrieving revision 2.103.2.3
diff -C2 -r2.103.2.2 -r2.103.2.3
*** stringobject.c 2001/04/27 18:04:51 2.103.2.2
--- stringobject.c 2001/05/02 21:24:00 2.103.2.3
***************
*** 402,405 ****
--- 402,412 ----
}
+ static PyObject *
+ string_str(PyObject *s)
+ {
+ Py_INCREF(s);
+ return s;
+ }
+
static int
string_length(PyStringObject *a)
***************
*** 2369,2373 ****
(hashfunc)string_hash, /* tp_hash */
0, /* tp_call */
! 0, /* tp_str */
PyGeneric_GetAttr, /* tp_getattro */
0, /* tp_setattro */
--- 2376,2380 ----
(hashfunc)string_hash, /* tp_hash */
0, /* tp_call */
! (reprfunc)string_str, /* tp_str */
PyGeneric_GetAttr, /* tp_getattro */
0, /* tp_setattro */