diff options
-rw-r--r-- | shared/nm-glib-aux/nm-shared-utils.h | 40 | ||||
-rw-r--r-- | src/supplicant/nm-supplicant-interface.c | 1 |
2 files changed, 25 insertions, 16 deletions
diff --git a/shared/nm-glib-aux/nm-shared-utils.h b/shared/nm-glib-aux/nm-shared-utils.h index 9f75c7f811..3d211f39f2 100644 --- a/shared/nm-glib-aux/nm-shared-utils.h +++ b/shared/nm-glib-aux/nm-shared-utils.h @@ -1543,7 +1543,12 @@ guint8 *nm_utils_hexstr2bin_alloc (const char *hexstr, /*****************************************************************************/ -#define _NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(scope, fcn_name, result_type, unknown_val, ...) \ +#define _NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(scope, \ + fcn_name, \ + result_type, \ + entry_cmd, \ + unknown_val_cmd, \ + ...) \ scope result_type \ fcn_name (const char *name) \ { \ @@ -1553,9 +1558,8 @@ fcn_name (const char *name) \ } LIST[] = { \ __VA_ARGS__ \ }; \ - gssize idx; \ \ - nm_assert (name); \ + { entry_cmd; } \ \ if (NM_MORE_ASSERTS > 5) { \ static gboolean checked = FALSE; \ @@ -1574,22 +1578,26 @@ fcn_name (const char *name) \ } \ } \ \ - idx = nm_utils_array_find_binary_search (LIST, \ - sizeof (LIST[0]), \ - G_N_ELEMENTS (LIST), \ - &name, \ - nm_strcmp_p_with_data, \ - NULL); \ - if (idx >= 0) \ - return LIST[idx].value; \ + if (G_LIKELY (name)) { \ + gssize idx; \ + \ + idx = nm_utils_array_find_binary_search (LIST, \ + sizeof (LIST[0]), \ + G_N_ELEMENTS (LIST), \ + &name, \ + nm_strcmp_p_with_data, \ + NULL); \ + if (G_LIKELY (idx >= 0)) \ + return LIST[idx].value; \ + } \ \ - { unknown_val; } \ + { unknown_val_cmd; } \ } -#define NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(fcn_name, lookup_type, unknown_val, ...) \ - _NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (, fcn_name, lookup_type, unknown_val, __VA_ARGS__) -#define NM_UTILS_STRING_TABLE_LOOKUP_DEFINE_STATIC(fcn_name, lookup_type, unknown_val, ...) \ - _NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (static, fcn_name, lookup_type, unknown_val, __VA_ARGS__) +#define NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(fcn_name, lookup_type, entry_cmd, unknown_val_cmd, ...) \ + _NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (, fcn_name, lookup_type, entry_cmd, unknown_val_cmd, __VA_ARGS__) +#define NM_UTILS_STRING_TABLE_LOOKUP_DEFINE_STATIC(fcn_name, lookup_type, entry_cmd, unknown_val_cmd, ...) \ + _NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (static, fcn_name, lookup_type, entry_cmd, unknown_val_cmd, __VA_ARGS__) /*****************************************************************************/ diff --git a/src/supplicant/nm-supplicant-interface.c b/src/supplicant/nm-supplicant-interface.c index 099a8c306a..ba162e2379 100644 --- a/src/supplicant/nm-supplicant-interface.c +++ b/src/supplicant/nm-supplicant-interface.c @@ -189,6 +189,7 @@ NM_UTILS_LOOKUP_STR_DEFINE (nm_supplicant_interface_state_to_string, NMSupplican NM_UTILS_STRING_TABLE_LOOKUP_DEFINE_STATIC ( wpas_state_string_to_enum, NMSupplicantInterfaceState, + { nm_assert (name); }, { return NM_SUPPLICANT_INTERFACE_STATE_INVALID; }, { "4way_handshake", NM_SUPPLICANT_INTERFACE_STATE_4WAY_HANDSHAKE }, { "associated", NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATED }, |