Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
CPython crashes if run on the following code:
classpro(property):def__new__(typ,*args,**kwargs):return"abcdef"classA:passp=property.__new__(pro)p.__set_name__(A,1)np=p.getter(lambdaself:1)
The crash happens on the last line. The problem is thefollowing code inproperty_copy:
new=PyObject_CallFunctionObjArgs(type,get,set,del,doc,NULL);Py_DECREF(type);if (new==NULL)returnNULL;Py_XSETREF(((propertyobject*)new)->prop_name,Py_XNewRef(pold->prop_name));returnnew;
In the crashing code,new is a string, so casting it topropertyobject and writing toprop_name is wrong.
This is synthetic code, I found the problem while porting some 3.10 features to PyPy and thinking about corner cases.