enum: Return boolean result for enum_from_name() lookup

Handling the result for enum_from_name() is difficult, as checking for
negative return values requires a cast if the enum type is unsigned. The new
signature clearly differentiates lookup result from lookup value.

Further, this actually allows to convert real -1 enum values, which could not
be distinguished from "not-found" and the -1 return value.

This also fixes several clang warnings where enums are unsigned.
This commit is contained in:
Martin Willi
2014-05-16 15:42:07 +02:00
parent 9ee8b3b41f
commit 064fe9c963
28 changed files with 102 additions and 85 deletions
+2 -2
View File
@@ -959,8 +959,8 @@ static void filter_specific_config_suites(private_tls_crypto_t *this,
enumerator = enumerator_create_token(config, ",", " ");
while (enumerator->enumerate(enumerator, &token))
{
suite = enum_from_name(tls_cipher_suite_names, token);
if (suite == suites[i].suite)
if (enum_from_name(tls_cipher_suite_names, token, &suite) &&
suite == suites[i].suite)
{
suites[remaining++] = suites[i];
break;