File tree Expand file tree Collapse file tree 3 files changed +22
-2
lines changed Expand file tree Collapse file tree 3 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,12 @@ What's New in Stackless 2.7.XX?
10
10
11
11
*Release date: XXXX-XX-XX*
12
12
13
+ - https://github.com/stackless-dev/stackless/issues/140
14
+ Fix bugs in prickelpit.c slp_find_execname().
15
+
16
+ - https://github.com/stackless-dev/stackless/issues/138
17
+ Correctly propose Stackless calls for C-functions.
18
+
13
19
- https://github.com/stackless-dev/stackless/issues/135
14
20
Fix small memory leaks for types with Stackless extensions.
15
21
Original file line number Diff line number Diff line change @@ -676,11 +676,23 @@ do { \
676
676
} while(0)
677
677
678
678
/* ditto, without incref. Made no sense to optimize. */
679
+ #if defined(__GNUC__ ) && defined(__STDC__ ) && (__STDC_VERSION__ >= 199901L )
680
+ #define SLP_DISABLE_GCC_W_ADDRESS \
681
+ _Pragma("GCC diagnostic push") \
682
+ _Pragma("GCC diagnostic ignored \"-Waddress\"")
683
+ #define SLP_RESTORE_WARNINGS \
684
+ _Pragma("GCC diagnostic pop")
685
+ #else
686
+ #define SLP_DISABLE_GCC_W_ADDRESS /**/
687
+ #define SLP_RESTORE_WARNINGS /**/
688
+ #endif
679
689
680
690
#define TASKLET_SETVAL_OWN (task , val ) \
681
691
do { \
682
692
PyObject *hold = (task)->tempval; \
693
+ SLP_DISABLE_GCC_W_ADDRESS /* suppress warning, if val == Py_NONE */ \
683
694
assert (val != NULL); \
695
+ SLP_RESTORE_WARNINGS \
684
696
(task )-> tempval = (PyObject * ) val ; \
685
697
Py_DECREF (hold ); \
686
698
} while (0 )
Original file line number Diff line number Diff line change @@ -410,6 +410,8 @@ slp_find_execname(PyFrameObject *f, int *valid)
410
410
PyObject * dic = dp ? dp -> dict : NULL ;
411
411
PyObject * exec_addr = PyLong_FromVoidPtr (f -> f_execute );
412
412
413
+ assert (valid != NULL );
414
+
413
415
if (exec_addr == NULL ) return NULL ;
414
416
exec_name = dic ? PyDict_GetItem (dic , exec_addr ) : NULL ;
415
417
if (exec_name == NULL ) {
@@ -418,7 +420,7 @@ slp_find_execname(PyFrameObject *f, int *valid)
418
420
sprintf (msg , "frame exec function at %p is not registered!" ,
419
421
(void * )f -> f_execute );
420
422
PyErr_SetString (PyExc_ValueError , msg );
421
- valid = 0 ;
423
+ * valid = 0 ;
422
424
}
423
425
else {
424
426
PyFrame_ExecFunc * good , * bad ;
@@ -427,7 +429,7 @@ slp_find_execname(PyFrameObject *f, int *valid)
427
429
goto err_exit ;
428
430
}
429
431
if (f -> f_execute == bad )
430
- valid = 0 ;
432
+ * valid = 0 ;
431
433
else if (f -> f_execute != good ) {
432
434
PyErr_SetString (PyExc_SystemError ,
433
435
"inconsistent c?frame function registration" );
You can’t perform that action at this time.
0 commit comments