diff --git a/include/pocketpy/common/refcount.h b/include/pocketpy/common/refcount.h index 15780bf8..8623cd39 100644 --- a/include/pocketpy/common/refcount.h +++ b/include/pocketpy/common/refcount.h @@ -11,7 +11,12 @@ typedef struct RefCounted { } RefCounted; #define PK_INCREF(obj) (obj)->rc.count++ -#define PK_DECREF(obj) if (--(obj)->rc.count == 0) (obj)->rc.dtor(obj) +#define PK_DECREF(obj) do { \ + if(--(obj)->rc.count == 0) { \ + (obj)->rc.dtor(obj); \ + free(obj); \ + } \ +} while(0) #ifdef __cplusplus }