mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	[3.13] GH-117195: Avoid assertion error in object.__sizeof__ (GH-117220) (GH-119456)
				
					
				
			This commit is contained in:
		
							parent
							
								
									dbe4f8a2e8
								
							
						
					
					
						commit
						251ef2e36f
					
				
					 3 changed files with 9 additions and 2 deletions
				
			
		|  | @ -1639,6 +1639,8 @@ class MyInt(int): | |||
|                     MyInt.__basicsize__ + MyInt.__itemsize__ * ndigits | ||||
|                 ) | ||||
| 
 | ||||
|         # GH-117195 -- This shouldn't crash | ||||
|         object.__sizeof__(1) | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     unittest.main() | ||||
|  |  | |||
|  | @ -0,0 +1,2 @@ | |||
| Avoid assertion failure for debug builds when calling | ||||
| ``object.__sizeof__(1)`` | ||||
|  | @ -7037,8 +7037,11 @@ object___sizeof___impl(PyObject *self) | |||
| 
 | ||||
|     res = 0; | ||||
|     isize = Py_TYPE(self)->tp_itemsize; | ||||
|     if (isize > 0) | ||||
|         res = Py_SIZE(self) * isize; | ||||
|     if (isize > 0) { | ||||
|         /* This assumes that ob_size is valid if tp_itemsize is not 0,
 | ||||
|          which isn't true for PyLongObject. */ | ||||
|         res = _PyVarObject_CAST(self)->ob_size * isize; | ||||
|     } | ||||
|     res += Py_TYPE(self)->tp_basicsize; | ||||
| 
 | ||||
|     return PyLong_FromSsize_t(res); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Miss Islington (bot)
						Miss Islington (bot)