[Python-checkins] CVS: python/dist/src/Objects object.c,2.71,2.72

Jeremy Hylton python-dev@python.org
Fri, 23 Jun 2000 07:36:35 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory slayer.i.sourceforge.net:/tmp/cvs-serv4239/Objects

Modified Files:
	object.c 
Log Message:
raise TypeError when PyObject_Get/SetAttr called with non-string name


Index: object.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/object.c,v
retrieving revision 2.71
retrieving revision 2.72
diff -C2 -r2.71 -r2.72
*** object.c	2000/06/09 16:20:39	2.71
--- object.c	2000/06/23 14:36:32	2.72
***************
*** 601,606 ****
  	if (v->ob_type->tp_getattro != NULL)
  		return (*v->ob_type->tp_getattro)(v, name);
! 	else
! 		return PyObject_GetAttrString(v, PyString_AsString(name));
  }
  
--- 601,611 ----
  	if (v->ob_type->tp_getattro != NULL)
  		return (*v->ob_type->tp_getattro)(v, name);
! 
! 	if (!PyString_Check(name)) {
! 		PyErr_SetString(PyExc_TypeError,
! 				"attribute name must be string");
! 		return NULL;
! 	}
! 	return PyObject_GetAttrString(v, PyString_AS_STRING(name));
  }
  
***************
*** 627,636 ****
  	int err;
  	Py_INCREF(name);
! 	PyString_InternInPlace(&name);
  	if (v->ob_type->tp_setattro != NULL)
  		err = (*v->ob_type->tp_setattro)(v, name, value);
! 	else
  		err = PyObject_SetAttrString(
! 			v, PyString_AsString(name), value);
  	Py_DECREF(name);
  	return err;
--- 632,648 ----
  	int err;
  	Py_INCREF(name);
! 	if (PyString_Check(name))
! 		PyString_InternInPlace(&name);
  	if (v->ob_type->tp_setattro != NULL)
  		err = (*v->ob_type->tp_setattro)(v, name, value);
! 	else if (PyString_Check(name)) {
  		err = PyObject_SetAttrString(
! 			v, PyString_AS_STRING(name), value);
! 	}
! 	else {
! 		PyErr_SetString(PyExc_TypeError,
! 				"attribute name must be string");
! 		err = -1;
! 	}
  	Py_DECREF(name);
  	return err;