ensure dirty flags / index arrays are in a valid state before & after executing a BMO in debug mode.
This commit is contained in:
@@ -332,6 +332,8 @@ void BM_Clear_Mesh(BMesh *bm);
|
||||
|
||||
void BM_ElemIndex_Ensure(BMesh *bm, const char hflag);
|
||||
|
||||
void BM_ElemIndex_Validate(BMesh *bm, const char *location, const char *func, const char *msg_a, const char *msg_b);
|
||||
|
||||
/*start/stop edit*/
|
||||
void bmesh_begin_edit(struct BMesh *bm, int flag);
|
||||
void bmesh_end_edit(struct BMesh *bm, int flag);
|
||||
|
||||
@@ -26,6 +26,9 @@ void BMO_ClearStack(BMesh *bm);
|
||||
int BMO_CatchOpError(BMesh *bm, BMOperator *catchop, int errorcode, char **msg);
|
||||
#endif
|
||||
|
||||
#define BM_ELEM_INDEX_VALIDATE(_bm, _msg_a, _msg_b) \
|
||||
BM_ElemIndex_Validate(_bm, __FILE__ ":" STRINGIFY(__LINE__), __func__, _msg_a, _msg_b)
|
||||
|
||||
/*------ error code defines -------*/
|
||||
|
||||
/*error messages*/
|
||||
|
||||
@@ -1289,6 +1289,10 @@ int BMO_CallOpf(BMesh *bm, const char *fmt, ...)
|
||||
va_list list;
|
||||
BMOperator op;
|
||||
|
||||
#ifdef DEBUG
|
||||
BM_ELEM_INDEX_VALIDATE(bm, "pre bmo", fmt);
|
||||
#endif
|
||||
|
||||
va_start(list, fmt);
|
||||
if (!BMO_VInitOpf(bm, &op, fmt, list)) {
|
||||
printf("%s: failed, format is:\n \"%s\"\n", __func__, fmt);
|
||||
@@ -1299,6 +1303,10 @@ int BMO_CallOpf(BMesh *bm, const char *fmt, ...)
|
||||
BMO_Exec_Op(bm, &op);
|
||||
BMO_Finish_Op(bm, &op);
|
||||
|
||||
#ifdef DEBUG
|
||||
BM_ELEM_INDEX_VALIDATE(bm, "post bmo", fmt);
|
||||
#endif
|
||||
|
||||
va_end(list);
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user