[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 */