mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	Merged revisions 72508 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r72508 | benjamin.peterson | 2009-05-09 11:36:39 -0500 (Sat, 09 May 2009) | 1 line convert some more special methods to use _PyObject_LookupSpecial ........
This commit is contained in:
		
							parent
							
								
									8bc5b68159
								
							
						
					
					
						commit
						a5758c0120
					
				
					 3 changed files with 31 additions and 28 deletions
				
			
		| 
						 | 
				
			
			@ -630,7 +630,7 @@ static PyObject *
 | 
			
		|||
sys_getsizeof(PyObject *self, PyObject *args, PyObject *kwds)
 | 
			
		||||
{
 | 
			
		||||
	PyObject *res = NULL;
 | 
			
		||||
	static PyObject *str__sizeof__, *gc_head_size = NULL;
 | 
			
		||||
	static PyObject *str__sizeof__ = NULL, *gc_head_size = NULL;
 | 
			
		||||
	static char *kwlist[] = {"object", "default", 0};
 | 
			
		||||
	PyObject *o, *dflt = NULL;
 | 
			
		||||
	PyObject *method;
 | 
			
		||||
| 
						 | 
				
			
			@ -639,13 +639,6 @@ sys_getsizeof(PyObject *self, PyObject *args, PyObject *kwds)
 | 
			
		|||
					 kwlist, &o, &dflt))
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	/* Initialize static variable needed by _PyType_Lookup */
 | 
			
		||||
	if (str__sizeof__ == NULL) {
 | 
			
		||||
		str__sizeof__ = PyUnicode_InternFromString("__sizeof__");
 | 
			
		||||
		if (str__sizeof__ == NULL)
 | 
			
		||||
			return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
        /* Initialize static variable for GC head size */
 | 
			
		||||
	if (gc_head_size == NULL) {
 | 
			
		||||
		gc_head_size = PyLong_FromSsize_t(sizeof(PyGC_Head));
 | 
			
		||||
| 
						 | 
				
			
			@ -656,14 +649,17 @@ sys_getsizeof(PyObject *self, PyObject *args, PyObject *kwds)
 | 
			
		|||
	/* Make sure the type is initialized. float gets initialized late */
 | 
			
		||||
	if (PyType_Ready(Py_TYPE(o)) < 0)
 | 
			
		||||
		return NULL;
 | 
			
		||||
	
 | 
			
		||||
	method = _PyType_Lookup(Py_TYPE(o), str__sizeof__);
 | 
			
		||||
 | 
			
		||||
	method = _PyObject_LookupSpecial(o, "__sizeof__",
 | 
			
		||||
					 &str__sizeof__);
 | 
			
		||||
	if (method == NULL)
 | 
			
		||||
		PyErr_Format(PyExc_TypeError,
 | 
			
		||||
			     "Type %.100s doesn't define __sizeof__",
 | 
			
		||||
			     Py_TYPE(o)->tp_name);
 | 
			
		||||
	else
 | 
			
		||||
		res = PyObject_CallFunctionObjArgs(method, o, NULL);
 | 
			
		||||
	else {
 | 
			
		||||
		res = PyObject_CallFunctionObjArgs(method, NULL);
 | 
			
		||||
		Py_DECREF(method);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* Has a default value been given */
 | 
			
		||||
	if ((res == NULL) && (dflt != NULL) &&
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue