Fix T60643: BMesh operator enum args fail when unset from Python
Error introduced with bmesh operator enum support: 1e6a5eb087
This commit is contained in:
@@ -228,7 +228,11 @@ typedef struct BMOpSlot {
|
||||
float vec[3];
|
||||
void **buf;
|
||||
GHash *ghash;
|
||||
BMO_FlagSet *enum_flags;
|
||||
struct {
|
||||
/** Don't clobber (i) when assigning flags, see #eBMOpSlotSubType_Int. */
|
||||
int _i;
|
||||
BMO_FlagSet *flags;
|
||||
} enum_data;
|
||||
} data;
|
||||
} BMOpSlot;
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ static void bmo_op_slots_init(const BMOSlotType *slot_types, BMOpSlot *slot_args
|
||||
break;
|
||||
case BMO_OP_SLOT_INT:
|
||||
if (ELEM(slot->slot_subtype.intg, BMO_OP_SLOT_SUBTYPE_INT_ENUM, BMO_OP_SLOT_SUBTYPE_INT_FLAG)) {
|
||||
slot->data.enum_flags = slot_types[i].enum_flags;
|
||||
slot->data.enum_data.flags = slot_types[i].enum_flags;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -173,7 +173,7 @@ static int bpy_slot_from_py(
|
||||
{
|
||||
if (slot->slot_subtype.intg == BMO_OP_SLOT_SUBTYPE_INT_ENUM) {
|
||||
int enum_val = -1;
|
||||
PyC_FlagSet *items = (PyC_FlagSet *)slot->data.enum_flags;
|
||||
PyC_FlagSet *items = (PyC_FlagSet *)slot->data.enum_data.flags;
|
||||
const char *enum_str = _PyUnicode_AsString(value);
|
||||
|
||||
if (enum_str == NULL) {
|
||||
@@ -191,7 +191,7 @@ static int bpy_slot_from_py(
|
||||
}
|
||||
else if (slot->slot_subtype.intg == BMO_OP_SLOT_SUBTYPE_INT_FLAG) {
|
||||
int flag = 0;
|
||||
PyC_FlagSet *items = (PyC_FlagSet *)slot->data.enum_flags;
|
||||
PyC_FlagSet *items = (PyC_FlagSet *)slot->data.enum_data.flags;
|
||||
|
||||
if (PyC_FlagSet_ToBitfield(items, value, &flag, slot_name) == -1) {
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user