@@ -3007,16 +3007,17 @@ PyCData_nohash(PyObject *self)
3007
3007
}
3008
3008
3009
3009
/*[clinic input]
3010
- _ctypes.PyCData.__reduce__ as PyCData_reduce
3010
+ @critical_section
3011
+ _ctypes.PyCData.__reduce__
3011
3012
3012
3013
myself: self
3013
3014
cls: defining_class
3014
3015
/
3015
3016
[clinic start generated code]*/
3016
3017
3017
3018
static PyObject *
3018
- PyCData_reduce_impl (PyObject * myself , PyTypeObject * cls )
3019
- /*[clinic end generated code: output=1a025ccfdd8c935d input=34097a5226ea63c1 ]*/
3019
+ _ctypes_PyCData___reduce___impl (PyObject * myself , PyTypeObject * cls )
3020
+ /*[clinic end generated code: output=eaad97e111599294 input=6a464e1a1e2bbdbd ]*/
3020
3021
{
3021
3022
CDataObject * self = _CDataObject_CAST (myself );
3022
3023
@@ -3037,33 +3038,33 @@ PyCData_reduce_impl(PyObject *myself, PyTypeObject *cls)
3037
3038
return NULL ;
3038
3039
}
3039
3040
PyObject * bytes ;
3040
- LOCK_PTR (self );
3041
3041
bytes = PyBytes_FromStringAndSize (self -> b_ptr , self -> b_size );
3042
- UNLOCK_PTR (self );
3043
3042
return Py_BuildValue ("O(O(NN))" , st -> _unpickle , Py_TYPE (myself ), dict ,
3044
3043
bytes );
3045
3044
}
3046
3045
3046
+ /*[clinic input]
3047
+ @critical_section
3048
+ _ctypes.PyCData.__setstate__
3049
+
3050
+ myself: self
3051
+ dict: object(subclass_of="&PyDict_Type")
3052
+ data: str(accept={str, robuffer}, zeroes=True)
3053
+ /
3054
+ [clinic start generated code]*/
3055
+
3047
3056
static PyObject *
3048
- PyCData_setstate (PyObject * myself , PyObject * args )
3057
+ _ctypes_PyCData___setstate___impl (PyObject * myself , PyObject * dict ,
3058
+ const char * data , Py_ssize_t data_length )
3059
+ /*[clinic end generated code: output=8bd4c0a5b4f254bd input=124f5070258254c6]*/
3049
3060
{
3050
- void * data ;
3051
- Py_ssize_t len ;
3052
- int res ;
3053
- PyObject * dict , * mydict ;
3054
3061
CDataObject * self = _CDataObject_CAST (myself );
3055
- if (!PyArg_ParseTuple (args , "O!s#" ,
3056
- & PyDict_Type , & dict , & data , & len ))
3057
- {
3058
- return NULL ;
3062
+
3063
+ if (data_length > self -> b_size ) {
3064
+ data_length = self -> b_size ;
3059
3065
}
3060
- if (len > self -> b_size )
3061
- len = self -> b_size ;
3062
- // XXX Can we use locked_memcpy_to()?
3063
- LOCK_PTR (self );
3064
- memmove (self -> b_ptr , data , len );
3065
- UNLOCK_PTR (self );
3066
- mydict = PyObject_GetAttrString (myself , "__dict__" );
3066
+ memmove (self -> b_ptr , data , data_length );
3067
+ PyObject * mydict = PyObject_GetAttrString (myself , "__dict__" );
3067
3068
if (mydict == NULL ) {
3068
3069
return NULL ;
3069
3070
}
@@ -3074,26 +3075,30 @@ PyCData_setstate(PyObject *myself, PyObject *args)
3074
3075
Py_DECREF (mydict );
3075
3076
return NULL ;
3076
3077
}
3077
- res = PyDict_Update (mydict , dict );
3078
+ int res = PyDict_Update (mydict , dict );
3078
3079
Py_DECREF (mydict );
3079
3080
if (res == -1 )
3080
3081
return NULL ;
3081
3082
Py_RETURN_NONE ;
3082
3083
}
3083
3084
3084
- /*
3085
- * default __ctypes_from_outparam__ method returns self.
3086
- */
3085
+ /*[clinic input]
3086
+ _ctypes.PyCData.__ctypes_from_outparam__
3087
+
3088
+ default __ctypes_from_outparam__ method returns self.
3089
+ [clinic start generated code]*/
3090
+
3087
3091
static PyObject *
3088
- PyCData_from_outparam (PyObject * self , PyObject * args )
3092
+ _ctypes_PyCData___ctypes_from_outparam___impl (PyObject * self )
3093
+ /*[clinic end generated code: output=a7facc849097b549 input=910c5fec33e268c9]*/
3089
3094
{
3090
3095
return Py_NewRef (self );
3091
3096
}
3092
3097
3093
3098
static PyMethodDef PyCData_methods [] = {
3094
- { "__ctypes_from_outparam__" , PyCData_from_outparam , METH_NOARGS , },
3095
- PYCDATA_REDUCE_METHODDEF
3096
- { "__setstate__" , PyCData_setstate , METH_VARARGS , },
3099
+ _CTYPES_PYCDATA___CTYPES_FROM_OUTPARAM___METHODDEF
3100
+ _CTYPES_PYCDATA___SETSTATE___METHODDEF
3101
+ _CTYPES_PYCDATA___REDUCE___METHODDEF
3097
3102
{ NULL , NULL },
3098
3103
};
3099
3104
0 commit comments