Fix #809 missing checks on generic types, accepting both types where constants should be and vice versa.

This commit is contained in:
Christoffer Lerno
2023-07-01 23:58:00 +02:00
parent 45820d45e5
commit 21d8a8b6da
9 changed files with 329 additions and 307 deletions

View File

@@ -115,6 +115,7 @@ char *str_printf(const char *var, ...) __printflike(1, 2);
char *str_vprintf(const char *var, va_list list);
void str_ellide_in_place(char *string, size_t max_size_shown);
bool str_is_valid_lowercase_name(const char *string);
bool str_is_valid_constant(const char *string);
bool str_has_no_uppercase(const char *string);
char *str_copy(const char *start, size_t str_len);

View File

@@ -43,6 +43,18 @@ bool str_is_valid_lowercase_name(const char *string)
return true;
}
bool str_is_valid_constant(const char *string)
{
char c;
// Must start with a lower case
int length = 0;
while ((c = *(string++)) != '\0')
{
if (!char_is_upper(c) && c != '_') return false;
}
return true;
}
void str_ellide_in_place(char *string, size_t max_size_shown)
{
size_t len = strlen(string);