summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/_asynciomodule.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c
index 08ce172..4b84c1d 100644
--- a/Modules/_asynciomodule.c
+++ b/Modules/_asynciomodule.c
@@ -119,11 +119,14 @@ typedef enum {
PyObject *prefix##_result; \
PyObject *prefix##_source_tb; \
PyObject *prefix##_cancel_msg; \
- fut_state prefix##_state; \
- int prefix##_log_tb; \
- int prefix##_blocking; \
PyObject *prefix##_weakreflist; \
- PyObject *prefix##_cancelled_exc;
+ PyObject *prefix##_cancelled_exc; \
+ fut_state prefix##_state; \
+ /* These bitfields need to be at the end of the struct
+ so that these and bitfields from TaskObj are contiguous.
+ */ \
+ unsigned prefix##_log_tb: 1; \
+ unsigned prefix##_blocking: 1;
typedef struct {
FutureObj_HEAD(fut)
@@ -131,13 +134,13 @@ typedef struct {
typedef struct {
FutureObj_HEAD(task)
+ unsigned task_must_cancel: 1;
+ unsigned task_log_destroy_pending: 1;
+ int task_num_cancels_requested;
PyObject *task_fut_waiter;
PyObject *task_coro;
PyObject *task_name;
PyObject *task_context;
- int task_must_cancel;
- int task_log_destroy_pending;
- int task_num_cancels_requested;
} TaskObj;
typedef struct {