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];
|
float vec[3];
|
||||||
void **buf;
|
void **buf;
|
||||||
GHash *ghash;
|
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;
|
} data;
|
||||||
} BMOpSlot;
|
} BMOpSlot;
|
||||||
|
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ static void bmo_op_slots_init(const BMOSlotType *slot_types, BMOpSlot *slot_args
|
|||||||
break;
|
break;
|
||||||
case BMO_OP_SLOT_INT:
|
case BMO_OP_SLOT_INT:
|
||||||
if (ELEM(slot->slot_subtype.intg, BMO_OP_SLOT_SUBTYPE_INT_ENUM, BMO_OP_SLOT_SUBTYPE_INT_FLAG)) {
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ static int bpy_slot_from_py(
|
|||||||
{
|
{
|
||||||
if (slot->slot_subtype.intg == BMO_OP_SLOT_SUBTYPE_INT_ENUM) {
|
if (slot->slot_subtype.intg == BMO_OP_SLOT_SUBTYPE_INT_ENUM) {
|
||||||
int enum_val = -1;
|
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);
|
const char *enum_str = _PyUnicode_AsString(value);
|
||||||
|
|
||||||
if (enum_str == NULL) {
|
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) {
|
else if (slot->slot_subtype.intg == BMO_OP_SLOT_SUBTYPE_INT_FLAG) {
|
||||||
int flag = 0;
|
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) {
|
if (PyC_FlagSet_ToBitfield(items, value, &flag, slot_name) == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user