[Python-checkins] CVS: python/dist/src/Objects bufferobject.c,2.14,2.15 cellobject.c,1.3,1.4 classobject.c,2.140,2.141 descrobject.c,2.7,2.8 fileobject.c,2.118,2.119 funcobject.c,2.40,2.41 methodobject.c,2.37,2.38 moduleobject.c,2.35,2.36 object.c,2.139,2.140 rangeobject.c,2.28,2.29 typeobject.c,2.45,2.46

Barry Warsaw bwarsaw@users.sourceforge.net
2001年8月24日 11:34:29 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv14195/Objects
Modified Files:
	bufferobject.c cellobject.c classobject.c descrobject.c 
	fileobject.c funcobject.c methodobject.c moduleobject.c 
	object.c rangeobject.c typeobject.c 
Log Message:
repr's converted to using PyString_FromFormat() instead of sprintf'ing
into a hardcoded char* buffer.
Closes patch #454743.
Index: bufferobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/bufferobject.c,v
retrieving revision 2.14
retrieving revision 2.15
diff -C2 -d -r2.14 -r2.15
*** bufferobject.c	2001年08月02日 04:15:00	2.14
--- bufferobject.c	2001年08月24日 18:34:26	2.15
***************
*** 185,202 ****
 buffer_repr(PyBufferObject *self)
 {
- 	char buf[300];
 	char *status = self->b_readonly ? "read-only" : "read-write";
 
 	if ( self->b_base == NULL )
! 	{
! 		sprintf(buf, "<%s buffer ptr %p, size %d at %p>",
! 			status,
! 			self->b_ptr,
! 			self->b_size,
! 			self);
! 	}
 	else
! 	{
! 		sprintf(buf, "<%s buffer for %p, ptr %p, size %d at %p>",
 			status,
 			self->b_base,
--- 185,199 ----
 buffer_repr(PyBufferObject *self)
 {
 	char *status = self->b_readonly ? "read-only" : "read-write";
 
 	if ( self->b_base == NULL )
! 		return PyString_FromFormat("<%s buffer ptr %p, size %d at %p>",
! 					 status,
! 					 self->b_ptr,
! 					 self->b_size,
! 					 self);
 	else
! 		return PyString_FromFormat(
! 			"<%s buffer for %p, ptr %p, size %d at %p>",
 			status,
 			self->b_base,
***************
*** 204,210 ****
 			self->b_size,
 			self);
- 	}
- 
- 	return PyString_FromString(buf);
 }
 
--- 201,204 ----
Index: cellobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/cellobject.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** cellobject.c	2001年08月02日 04:15:00	1.3
--- cellobject.c	2001年08月24日 18:34:26	1.4
***************
*** 63,74 ****
 cell_repr(PyCellObject *op)
 {
- 	char buf[256];
- 
 	if (op->ob_ref == NULL)
! 		sprintf(buf, "<cell at %p: empty>", op);
! 	else
! 		sprintf(buf, "<cell at %p: %.80s object at %p>",
! 			op, op->ob_ref->ob_type->tp_name, op->ob_ref);
! 	return PyString_FromString(buf);
 }
 
--- 63,72 ----
 cell_repr(PyCellObject *op)
 {
 	if (op->ob_ref == NULL)
! 		return PyString_FromFormat("<cell at %p: empty>", op);
! 
! 	return PyString_FromFormat("<cell at %p: %.80s object at %p>",
! 				 op, op->ob_ref->ob_type->tp_name,
! 				 op->ob_ref);
 }
 
Index: classobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/classobject.c,v
retrieving revision 2.140
retrieving revision 2.141
diff -C2 -d -r2.140 -r2.141
*** classobject.c	2001年08月17日 13:59:27	2.140
--- classobject.c	2001年08月24日 18:34:26	2.141
***************
*** 314,318 ****
 {
 	PyObject *mod = PyDict_GetItemString(op->cl_dict, "__module__");
- 	char buf[140];
 	char *name;
 	if (op->cl_name == NULL || !PyString_Check(op->cl_name))
--- 314,317 ----
***************
*** 321,330 ****
 		name = PyString_AsString(op->cl_name);
 	if (mod == NULL || !PyString_Check(mod))
! 		sprintf(buf, "<class ?.%.100s at %p>", name, op);
 	else
! 		sprintf(buf, "<class %.50s.%.50s at %p>",
! 			PyString_AsString(mod),
! 			name, op);
! 	return PyString_FromString(buf);
 }
 
--- 320,328 ----
 		name = PyString_AsString(op->cl_name);
 	if (mod == NULL || !PyString_Check(mod))
! 		return PyString_FromFormat("<class ?.s at %p>", name, op);
 	else
! 		return PyString_FromFormat("<class %s.%s at %p>",
! 					 PyString_AsString(mod),
! 					 name, op);
 }
 
***************
*** 777,781 ****
 	func = instance_getattr(inst, reprstr);
 	if (func == NULL) {
- 		char buf[140];
 		PyObject *classname = inst->in_class->cl_name;
 		PyObject *mod = PyDict_GetItemString(
--- 775,778 ----
***************
*** 788,798 ****
 		PyErr_Clear();
 		if (mod == NULL || !PyString_Check(mod))
! 			sprintf(buf, "<?.%.100s instance at %p>",
! 				cname, inst);
 		else
! 			sprintf(buf, "<%.50s.%.50s instance at %p>",
! 				PyString_AsString(mod),
! 				cname, inst);
! 		return PyString_FromString(buf);
 	}
 	res = PyEval_CallObject(func, (PyObject *)NULL);
--- 785,794 ----
 		PyErr_Clear();
 		if (mod == NULL || !PyString_Check(mod))
! 			return PyString_FromFormat("<?.%s instance at %p>",
! 						 cname, inst);
 		else
! 			return PyString_FromFormat("<%s.%s instance at %p>",
! 						 PyString_AsString(mod),
! 						 cname, inst);
 	}
 	res = PyEval_CallObject(func, (PyObject *)NULL);
***************
*** 2043,2047 ****
 instancemethod_repr(PyMethodObject *a)
 {
- 	char buffer[240];
 	PyObject *self = a->im_self;
 	PyObject *func = a->im_func;
--- 2039,2042 ----
***************
*** 2073,2078 ****
 	}
 	if (self == NULL)
! 		sprintf(buffer, "<unbound method %.100s.%.100s>",
! 			sklassname, sfuncname);
 	else {
 		/* XXX Shouldn't use repr() here! */
--- 2068,2073 ----
 	}
 	if (self == NULL)
! 		result = PyString_FromFormat("<unbound method %s.%s>",
! 					 sklassname, sfuncname);
 	else {
 		/* XXX Shouldn't use repr() here! */
***************
*** 2084,2092 ****
 			goto fail;
 		}
! 		sprintf(buffer, "<bound method %.60s.%.60s of %.60s>",
! 			sklassname, sfuncname, PyString_AS_STRING(selfrepr));
 		Py_DECREF(selfrepr);
 	}
- 	result = PyString_FromString(buffer);
 fail:
 	Py_XDECREF(funcname);
--- 2079,2087 ----
 			goto fail;
 		}
! 		result = PyString_FromFormat("<bound method %s.%s of %s>",
! 					 sklassname, sfuncname,
! 					 PyString_AS_STRING(selfrepr));
 		Py_DECREF(selfrepr);
 	}
 fail:
 	Py_XDECREF(funcname);
Index: descrobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/descrobject.c,v
retrieving revision 2.7
retrieving revision 2.8
diff -C2 -d -r2.7 -r2.8
*** descrobject.c	2001年08月24日 15:23:20	2.7
--- descrobject.c	2001年08月24日 18:34:26	2.8
***************
*** 56,63 ****
 descr_repr(PyDescrObject *descr, char *format)
 {
! 	char buffer[500];
! 
! 	sprintf(buffer, format, descr_name(descr), descr->d_type->tp_name);
! 	return PyString_FromString(buffer);
 }
 
--- 56,61 ----
 descr_repr(PyDescrObject *descr, char *format)
 {
! 	return PyString_FromFormat(format, descr_name(descr),
! 				 descr->d_type->tp_name);
 }
 
***************
*** 66,70 ****
 {
 	return descr_repr((PyDescrObject *)descr, 
! 			 "<method '%.300s' of '%.100s' objects>");
 }
 
--- 64,68 ----
 {
 	return descr_repr((PyDescrObject *)descr, 
! 			 "<method '%s' of '%s' objects>");
 }
 
***************
*** 73,77 ****
 {
 	return descr_repr((PyDescrObject *)descr, 
! 			 "<member '%.300s' of '%.100s' objects>");
 }
 
--- 71,75 ----
 {
 	return descr_repr((PyDescrObject *)descr, 
! 			 "<member '%s' of '%s' objects>");
 }
 
***************
*** 80,84 ****
 {
 	return descr_repr((PyDescrObject *)descr, 
! 			 "<attribute '%.300s' of '%.100s' objects>");
 }
 
--- 78,82 ----
 {
 	return descr_repr((PyDescrObject *)descr, 
! 			 "<attribute '%s' of '%s' objects>");
 }
 
***************
*** 87,91 ****
 {
 	return descr_repr((PyDescrObject *)descr, 
! 			 "<slot wrapper '%.300s' of '%.100s' objects>");
 }
 
--- 85,89 ----
 {
 	return descr_repr((PyDescrObject *)descr, 
! 			 "<slot wrapper '%s' of '%s' objects>");
 }
 
***************
*** 101,106 ****
 	if (!PyObject_IsInstance(obj, (PyObject *)(descr->d_type))) {
 		PyErr_Format(PyExc_TypeError,
! 			 "descriptor '%.200s' for '%.100s' objects "
! 			 "doesn't apply to '%.100s' object",
 			 descr_name((PyDescrObject *)descr),
 			 descr->d_type->tp_name,
--- 99,104 ----
 	if (!PyObject_IsInstance(obj, (PyObject *)(descr->d_type))) {
 		PyErr_Format(PyExc_TypeError,
! 			 "descriptor '%s' for '%s' objects "
! 			 "doesn't apply to '%s' object",
 			 descr_name((PyDescrObject *)descr),
 			 descr->d_type->tp_name,
Index: fileobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/fileobject.c,v
retrieving revision 2.118
retrieving revision 2.119
diff -C2 -d -r2.118 -r2.119
*** fileobject.c	2001年08月16日 13:15:00	2.118
--- fileobject.c	2001年08月24日 18:34:26	2.119
***************
*** 180,190 ****
 file_repr(PyFileObject *f)
 {
! 	char buf[300];
! 	sprintf(buf, "<%s file '%.256s', mode '%.10s' at %p>",
! 		f->f_fp == NULL ? "closed" : "open",
! 		PyString_AsString(f->f_name),
! 		PyString_AsString(f->f_mode),
! 		f);
! 	return PyString_FromString(buf);
 }
 
--- 180,188 ----
 file_repr(PyFileObject *f)
 {
! 	return PyString_FromFormat("<%s file '%s', mode '%s' at %p>",
! 				 f->f_fp == NULL ? "closed" : "open",
! 				 PyString_AsString(f->f_name),
! 				 PyString_AsString(f->f_mode),
! 				 f);
 }
 
Index: funcobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/funcobject.c,v
retrieving revision 2.40
retrieving revision 2.41
diff -C2 -d -r2.40 -r2.41
*** funcobject.c	2001年08月14日 18:23:58	2.40
--- funcobject.c	2001年08月24日 18:34:26	2.41
***************
*** 240,251 ****
 func_repr(PyFunctionObject *op)
 {
- 	char buf[140];
 	if (op->func_name == Py_None)
! 		sprintf(buf, "<anonymous function at %p>", op);
! 	else
! 		sprintf(buf, "<function %.100s at %p>",
! 			PyString_AsString(op->func_name),
! 			op);
! 	return PyString_FromString(buf);
 }
 
--- 240,248 ----
 func_repr(PyFunctionObject *op)
 {
 	if (op->func_name == Py_None)
! 		return PyString_FromFormat("<anonymous function at %p>", op);
! 	return PyString_FromFormat("<function %s at %p>",
! 				 PyString_AsString(op->func_name),
! 				 op);
 }
 
Index: methodobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/methodobject.c,v
retrieving revision 2.37
retrieving revision 2.38
diff -C2 -d -r2.37 -r2.38
*** methodobject.c	2001年08月16日 13:15:00	2.37
--- methodobject.c	2001年08月24日 18:34:26	2.38
***************
*** 173,185 ****
 meth_repr(PyCFunctionObject *m)
 {
- 	char buf[200];
 	if (m->m_self == NULL)
! 		sprintf(buf, "<built-in function %.80s>", m->m_ml->ml_name);
! 	else
! 		sprintf(buf,
! 			"<built-in method %.80s of %.80s object at %p>",
! 			m->m_ml->ml_name, m->m_self->ob_type->tp_name,
! 			m->m_self);
! 	return PyString_FromString(buf);
 }
 
--- 173,183 ----
 meth_repr(PyCFunctionObject *m)
 {
 	if (m->m_self == NULL)
! 		return PyString_FromFormat("<built-in function %s>",
! 					 m->m_ml->ml_name);
! 	return PyString_FromFormat("<built-in method %s of %s object at %p>",
! 				 m->m_ml->ml_name,
! 				 m->m_self->ob_type->tp_name,
! 				 m->m_self);
 }
 
Index: moduleobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/moduleobject.c,v
retrieving revision 2.35
retrieving revision 2.36
diff -C2 -d -r2.35 -r2.36
*** moduleobject.c	2001年08月16日 20:39:24	2.35
--- moduleobject.c	2001年08月24日 18:34:26	2.36
***************
*** 158,168 ****
 module_repr(PyModuleObject *m)
 {
- 	static int template1len = sizeof("<module '' (built-in)>") + 1;
- 	static int template2len = sizeof("<module '' from ''>") + 1;
- 
- 	char *buf;
 	char *name;
 	char *filename;
- 	PyObject *rtn;
 
 	name = PyModule_GetName((PyObject *)m);
--- 158,163 ----
***************
*** 174,190 ****
 	if (filename == NULL) {
 		PyErr_Clear();
! 		buf = PyObject_MALLOC(
! 			sizeof(char) * (strlen(name) + template1len));
! 		sprintf(buf, "<module '%s' (built-in)>", name);
! 	}
! 	else {
! 		buf = PyObject_MALLOC(
! 			sizeof(char) * (strlen(name) + strlen(filename) +
! 					template2len));
! 		sprintf(buf, "<module '%s' from '%s'>", name, filename);
 	}
! 	rtn = PyString_FromString(buf);
! 	PyObject_FREE(buf);
! 	return rtn;
 }
 
--- 169,175 ----
 	if (filename == NULL) {
 		PyErr_Clear();
! 		return PyString_FromFormat("<module '%s' (built-in)>", name);
 	}
! 	return PyString_FromFormat("<module '%s' from '%s'>", name, filename);
 }
 
Index: object.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/object.c,v
retrieving revision 2.139
retrieving revision 2.140
diff -C2 -d -r2.139 -r2.140
*** object.c	2001年08月17日 18:39:25	2.139
--- object.c	2001年08月24日 18:34:26	2.140
***************
*** 223,226 ****
--- 223,227 ----
 #endif /* WITH_CYCLE_GC */
 
+ 
 PyObject *
 PyObject_Repr(PyObject *v)
***************
*** 236,245 ****
 	if (v == NULL)
 		return PyString_FromString("<NULL>");
! 	else if (v->ob_type->tp_repr == NULL) {
! 		char buf[120];
! 		sprintf(buf, "<%.80s object at %p>",
! 			v->ob_type->tp_name, v);
! 		return PyString_FromString(buf);
! 	}
 	else {
 		PyObject *res;
--- 237,243 ----
 	if (v == NULL)
 		return PyString_FromString("<NULL>");
! 	else if (v->ob_type->tp_repr == NULL)
! 		return PyString_FromFormat("<%s object at %p",
! 					 v->ob_type->tp_name, v);
 	else {
 		PyObject *res;
Index: rangeobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/rangeobject.c,v
retrieving revision 2.28
retrieving revision 2.29
diff -C2 -d -r2.28 -r2.29
*** rangeobject.c	2001年08月16日 13:15:00	2.28
--- rangeobject.c	2001年08月24日 18:34:26	2.29
***************
*** 127,154 ****
 range_repr(rangeobject *r)
 {
! 	/* buffers must be big enough to hold 3 longs + an int +
! 	 * a bit of "(xrange(...) * ...)" text.
! 	 */
! 	char buf1[250];
! 	char buf2[250];
! 
 	if (r->start == 0 && r->step == 1)
! 		sprintf(buf1, "xrange(%ld)", r->start + r->len * r->step);
 
 	else if (r->step == 1)
! 		sprintf(buf1, "xrange(%ld, %ld)",
! 			r->start,
! 			r->start + r->len * r->step);
 
 	else
! 		sprintf(buf1, "xrange(%ld, %ld, %ld)",
! 			r->start,
! 			r->start + r->len * r->step,
! 			r->step);
! 
! 	if (r->reps != 1)
! 		sprintf(buf2, "(%s * %d)", buf1, r->reps);
! 
! 	return PyString_FromString(r->reps == 1 ? buf1 : buf2);
 }
 
--- 127,154 ----
 range_repr(rangeobject *r)
 {
! 	PyObject *rtn;
! 	
 	if (r->start == 0 && r->step == 1)
! 		rtn = PyString_FromFormat("xrange(%ld)",
! 					 r->start + r->len * r->step);
 
 	else if (r->step == 1)
! 		rtn = PyString_FromFormat("xrange(%ld, %ld)",
! 					 r->start,
! 					 r->start + r->len * r->step);
 
 	else
! 		rtn = PyString_FromFormat("xrange(%ld, %ld, %ld)",
! 					 r->start,
! 					 r->start + r->len * r->step,
! 					 r->step);
! 	if (r->reps != 1) {
! 		PyObject *extra = PyString_FromFormat(
! 			"(%s * %d)",
! 			PyString_AS_STRING(rtn), r->reps);
! 		Py_DECREF(rtn);
! 		rtn = extra;
! 	}
! 	return rtn;
 }
 
Index: typeobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/typeobject.c,v
retrieving revision 2.45
retrieving revision 2.46
diff -C2 -d -r2.45 -r2.46
*** typeobject.c	2001年08月24日 16:47:00	2.45
--- typeobject.c	2001年08月24日 18:34:26	2.46
***************
*** 114,119 ****
 type_repr(PyTypeObject *type)
 {
! 	PyObject *mod, *name;
! 	char buf[200];
 
 	mod = type_module(type, NULL);
--- 114,118 ----
 type_repr(PyTypeObject *type)
 {
! 	PyObject *mod, *name, *rtn;
 
 	mod = type_module(type, NULL);
***************
*** 127,139 ****
 	if (name == NULL)
 		return NULL;
! 	if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__"))
! 		sprintf(buf, "<type '%.80s.%.80s'>",
! 			PyString_AS_STRING(mod),
! 			PyString_AS_STRING(name));
 	else
! 		sprintf(buf, "<type '%.80s'>", type->tp_name);
 	Py_XDECREF(mod);
 	Py_DECREF(name);
! 	return PyString_FromString(buf);
 }
 
--- 126,141 ----
 	if (name == NULL)
 		return NULL;
! 
! 	if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__")) {
! 		rtn = PyString_FromFormat("<type '%s.%s'>",
! 					 PyString_AS_STRING(mod),
! 					 PyString_AS_STRING(name));
! 	}
 	else
! 		rtn = PyString_FromFormat("<type '%s'>", type->tp_name);
! 
 	Py_XDECREF(mod);
 	Py_DECREF(name);
! 	return rtn;
 }
 
***************
*** 969,974 ****
 {
 	PyTypeObject *type;
! 	PyObject *mod, *name;
! 	char buf[200];
 
 	type = self->ob_type;
--- 971,975 ----
 {
 	PyTypeObject *type;
! 	PyObject *mod, *name, *rtn;
 
 	type = self->ob_type;
***************
*** 984,996 ****
 		return NULL;
 	if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__"))
! 		sprintf(buf, "<%.80s.%.80s instance at %p>",
! 			PyString_AS_STRING(mod),
! 			PyString_AS_STRING(name),
! 			self);
 	else
! 		sprintf(buf, "<%.80s instance at %p>", type->tp_name, self);
 	Py_XDECREF(mod);
 	Py_DECREF(name);
! 	return PyString_FromString(buf);
 }
 
--- 985,998 ----
 		return NULL;
 	if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__"))
! 		rtn = PyString_FromFormat("<%s.%s instance at %p>",
! 					 PyString_AS_STRING(mod),
! 					 PyString_AS_STRING(name),
! 					 self);
 	else
! 		rtn = PyString_FromFormat("<%s instance at %p>",
! 					 type->tp_name, self);
 	Py_XDECREF(mod);
 	Py_DECREF(name);
! 	return rtn;
 }
 
***************
*** 2591,2601 ****
 		return res;
 	}
! 	else {
! 		char buf[120];
! 		PyErr_Clear();
! 		sprintf(buf, "<%.80s object at %p>",
! 			self->ob_type->tp_name, self);
! 		return PyString_FromString(buf);
! 	}
 }
 
--- 2593,2599 ----
 		return res;
 	}
! 	PyErr_Clear();
! 	return PyString_FromFormat("<%s object at %p>",
! 				 self->ob_type->tp_name, self);
 }
 

AltStyle によって変換されたページ (->オリジナル) /