@@ -72,22 +72,16 @@ wrapperdescr_repr(PyWrapperDescrObject *descr)
72
72
}
73
73
74
74
static int
75
- descr_check (PyDescrObject * descr , PyObject * obj , PyObject * * pres )
75
+ descr_check (PyDescrObject * descr , PyObject * obj )
76
76
{
77
- if (obj == NULL ) {
78
- Py_INCREF (descr );
79
- * pres = (PyObject * )descr ;
80
- return 1 ;
81
- }
82
77
if (!PyObject_TypeCheck (obj , descr -> d_type )) {
83
78
PyErr_Format (PyExc_TypeError ,
84
79
"descriptor '%V' for '%.100s' objects "
85
80
"doesn't apply to a '%.100s' object" ,
86
81
descr_name ((PyDescrObject * )descr ), "?" ,
87
82
descr -> d_type -> tp_name ,
88
83
Py_TYPE (obj )-> tp_name );
89
- * pres = NULL ;
90
- return 1 ;
84
+ return -1 ;
91
85
}
92
86
return 0 ;
93
87
}
@@ -137,10 +131,13 @@ classmethod_get(PyMethodDescrObject *descr, PyObject *obj, PyObject *type)
137
131
static PyObject *
138
132
method_get (PyMethodDescrObject * descr , PyObject * obj , PyObject * type )
139
133
{
140
- PyObject * res ;
141
-
142
- if (descr_check ((PyDescrObject * )descr , obj , & res ))
143
- return res ;
134
+ if (obj == NULL ) {
135
+ Py_INCREF (descr );
136
+ return (PyObject * )descr ;
137
+ }
138
+ if (descr_check ((PyDescrObject * )descr , obj ) < 0 ) {
139
+ return NULL ;
140
+ }
144
141
if (descr -> d_method -> ml_flags & METH_METHOD ) {
145
142
if (PyType_Check (type )) {
146
143
return PyCMethod_New (descr -> d_method , obj , NULL , descr -> d_common .d_type );
@@ -159,10 +156,13 @@ method_get(PyMethodDescrObject *descr, PyObject *obj, PyObject *type)
159
156
static PyObject *
160
157
member_get (PyMemberDescrObject * descr , PyObject * obj , PyObject * type )
161
158
{
162
- PyObject * res ;
163
-
164
- if (descr_check ((PyDescrObject * )descr , obj , & res ))
165
- return res ;
159
+ if (obj == NULL ) {
160
+ Py_INCREF (descr );
161
+ return (PyObject * )descr ;
162
+ }
163
+ if (descr_check ((PyDescrObject * )descr , obj ) < 0 ) {
164
+ return NULL ;
165
+ }
166
166
167
167
if (descr -> d_member -> flags & READ_RESTRICTED ) {
168
168
if (PySys_Audit ("object.__getattr__" , "Os" ,
@@ -177,10 +177,13 @@ member_get(PyMemberDescrObject *descr, PyObject *obj, PyObject *type)
177
177
static PyObject *
178
178
getset_get (PyGetSetDescrObject * descr , PyObject * obj , PyObject * type )
179
179
{
180
- PyObject * res ;
181
-
182
- if (descr_check ((PyDescrObject * )descr , obj , & res ))
183
- return res ;
180
+ if (obj == NULL ) {
181
+ Py_INCREF (descr );
182
+ return (PyObject * )descr ;
183
+ }
184
+ if (descr_check ((PyDescrObject * )descr , obj ) < 0 ) {
185
+ return NULL ;
186
+ }
184
187
if (descr -> d_getset -> get != NULL )
185
188
return descr -> d_getset -> get (obj , descr -> d_getset -> closure );
186
189
PyErr_Format (PyExc_AttributeError ,
@@ -193,16 +196,18 @@ getset_get(PyGetSetDescrObject *descr, PyObject *obj, PyObject *type)
193
196
static PyObject *
194
197
wrapperdescr_get (PyWrapperDescrObject * descr , PyObject * obj , PyObject * type )
195
198
{
196
- PyObject * res ;
197
-
198
- if (descr_check ((PyDescrObject * )descr , obj , & res ))
199
- return res ;
199
+ if (obj == NULL ) {
200
+ Py_INCREF (descr );
201
+ return (PyObject * )descr ;
202
+ }
203
+ if (descr_check ((PyDescrObject * )descr , obj ) < 0 ) {
204
+ return NULL ;
205
+ }
200
206
return PyWrapper_New ((PyObject * )descr , obj );
201
207
}
202
208
203
209
static int
204
- descr_setcheck (PyDescrObject * descr , PyObject * obj , PyObject * value ,
205
- int * pres )
210
+ descr_setcheck (PyDescrObject * descr , PyObject * obj , PyObject * value )
206
211
{
207
212
assert (obj != NULL );
208
213
if (!PyObject_TypeCheck (obj , descr -> d_type )) {
@@ -212,32 +217,30 @@ descr_setcheck(PyDescrObject *descr, PyObject *obj, PyObject *value,
212
217
descr_name (descr ), "?" ,
213
218
descr -> d_type -> tp_name ,
214
219
Py_TYPE (obj )-> tp_name );
215
- * pres = -1 ;
216
- return 1 ;
220
+ return -1 ;
217
221
}
218
222
return 0 ;
219
223
}
220
224
221
225
static int
222
226
member_set (PyMemberDescrObject * descr , PyObject * obj , PyObject * value )
223
227
{
224
- int res ;
225
-
226
- if (descr_setcheck ((PyDescrObject * )descr , obj , value , & res ))
227
- return res ;
228
+ if (descr_setcheck ((PyDescrObject * )descr , obj , value ) < 0 ) {
229
+ return -1 ;
230
+ }
228
231
return PyMember_SetOne ((char * )obj , descr -> d_member , value );
229
232
}
230
233
231
234
static int
232
235
getset_set (PyGetSetDescrObject * descr , PyObject * obj , PyObject * value )
233
236
{
234
- int res ;
235
-
236
- if (descr_setcheck ((PyDescrObject * )descr , obj , value , & res ))
237
- return res ;
238
- if (descr -> d_getset -> set != NULL )
237
+ if (descr_setcheck ((PyDescrObject * )descr , obj , value ) < 0 ) {
238
+ return -1 ;
239
+ }
240
+ if (descr -> d_getset -> set != NULL ) {
239
241
return descr -> d_getset -> set (obj , value ,
240
242
descr -> d_getset -> closure );
243
+ }
241
244
PyErr_Format (PyExc_AttributeError ,
242
245
"attribute '%V' of '%.100s' objects is not writable" ,
243
246
descr_name ((PyDescrObject * )descr ), "?" ,
@@ -264,8 +267,7 @@ method_check_args(PyObject *func, PyObject *const *args, Py_ssize_t nargs, PyObj
264
267
return -1 ;
265
268
}
266
269
PyObject * self = args [0 ];
267
- PyObject * dummy ;
268
- if (descr_check ((PyDescrObject * )func , self , & dummy )) {
270
+ if (descr_check ((PyDescrObject * )func , self ) < 0 ) {
269
271
return -1 ;
270
272
}
271
273
if (kwnames && PyTuple_GET_SIZE (kwnames )) {
0 commit comments