Driver Variable Name Validation: Added missing check for zero-length (i.e. "blank") names

This commit is contained in:
Joshua Leung 2016-03-26 18:01:02 +13:00
parent 0512e20ae9
commit 5759e335c3
3 changed files with 12 additions and 1 deletions

@ -1612,6 +1612,11 @@ void driver_variable_name_validate(DriverVar *dvar)
/* clear all invalid-name flags */
dvar->flag &= ~DVAR_ALL_INVALID_FLAGS;
/* 0) Zero-length identifiers are not allowed */
if (dvar->name[0] == '\0') {
dvar->flag |= DVAR_FLAG_INVALID_EMPTY;
}
/* 1) Must start with a letter */
/* XXX: We assume that valid unicode letters in other languages are ok too, hence the blacklisting */
if (ELEM(dvar->name[0], '0', '1', '2', '3', '4', '5', '6', '7', '8', '9')) {

@ -527,6 +527,9 @@ static void driver_dvar_invalid_name_query_cb(bContext *C, void *dvar_v, void *U
DriverVar *dvar = (DriverVar *)dvar_v;
if (dvar->flag & DVAR_FLAG_INVALID_EMPTY) {
uiItemL(layout, "It cannot be left blank", ICON_ERROR);
}
if (dvar->flag & DVAR_FLAG_INVALID_START_NUM) {
uiItemL(layout, "It cannot start with a number", ICON_ERROR);
}

@ -376,6 +376,8 @@ typedef enum eDriverVar_Flags {
DVAR_FLAG_INVALID_HAS_SPECIAL = (1 << 6),
/* name is a reserved keyword */
DVAR_FLAG_INVALID_PY_KEYWORD = (1 << 7),
/* name is zero-length */
DVAR_FLAG_INVALID_EMPTY = (1 << 8),
} eDriverVar_Flags;
/* All invalid dvar name flags */
@ -386,7 +388,8 @@ typedef enum eDriverVar_Flags {
DVAR_FLAG_INVALID_HAS_SPACE | \
DVAR_FLAG_INVALID_HAS_DOT | \
DVAR_FLAG_INVALID_HAS_SPECIAL | \
DVAR_FLAG_INVALID_PY_KEYWORD \
DVAR_FLAG_INVALID_PY_KEYWORD | \
DVAR_FLAG_INVALID_EMPTY \
)
/* --- */