@@ -251,9 +251,10 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
251251 break ;
252252 }
253253 case Py_T_LONG :{
254- * ( long * ) addr = PyLong_AsLong (v );
255- if ((* ( long * ) addr == -1 ) && PyErr_Occurred ())
254+ long long_val = PyLong_AsLong (v );
255+ if ((long_val == -1 ) && PyErr_Occurred ())
256256 return -1 ;
257+ * (long * )addr = long_val ;
257258 break ;
258259 }
259260 case Py_T_ULONG : {
@@ -283,10 +284,10 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
283284 break ;
284285 }
285286 case Py_T_PYSSIZET :{
286- * ( Py_ssize_t * ) addr = PyLong_AsSsize_t (v );
287- if ((* ( Py_ssize_t * ) addr == (Py_ssize_t )- 1 )
288- && PyErr_Occurred ())
289- return -1 ;
287+ Py_ssize_t ssize_val = PyLong_AsSsize_t (v );
288+ if ((ssize_val == (Py_ssize_t )- 1 ) && PyErr_Occurred () )
289+ return -1 ;
290+ * ( Py_ssize_t * ) addr = ssize_val ;
290291 break ;
291292 }
292293 case Py_T_FLOAT :{
@@ -296,11 +297,13 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
296297 * (float * )addr = (float )double_val ;
297298 break ;
298299 }
299- case Py_T_DOUBLE :
300- * ( double * ) addr = PyFloat_AsDouble (v );
301- if ((* ( double * ) addr == -1 ) && PyErr_Occurred ())
300+ case Py_T_DOUBLE :{
301+ double double_val = PyFloat_AsDouble (v );
302+ if ((double_val == -1 ) && PyErr_Occurred ())
302303 return -1 ;
304+ * (double * )addr = double_val ;
303305 break ;
306+ }
304307 case _Py_T_OBJECT :
305308 case Py_T_OBJECT_EX :
306309 Py_BEGIN_CRITICAL_SECTION (obj );
@@ -326,10 +329,10 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
326329 PyErr_SetString (PyExc_TypeError , "readonly attribute" );
327330 return -1 ;
328331 case Py_T_LONGLONG :{
329- long long value ;
330- * (long long * )addr = value = PyLong_AsLongLong (v );
332+ long long value = PyLong_AsLongLong (v );
331333 if ((value == -1 ) && PyErr_Occurred ())
332334 return -1 ;
335+ * (long long * )addr = value ;
333336 break ;
334337 }
335338 case Py_T_ULONGLONG : {
0 commit comments