diff options
author | Masahiro Yamada <masahiroy@kernel.org> | 2024-02-02 16:58:15 +0100 |
---|---|---|
committer | Masahiro Yamada <masahiroy@kernel.org> | 2024-02-19 10:20:41 +0100 |
commit | 6676c5bc15e66268c9c9669d5852aa779689c74e (patch) | |
tree | 94c53ce02df799a82ec7b76cfa4cb5315f4fd49f | |
parent | kconfig: move the file and lineno in struct file to struct buffer (diff) | |
download | linux-6676c5bc15e66268c9c9669d5852aa779689c74e.tar.xz linux-6676c5bc15e66268c9c9669d5852aa779689c74e.zip |
kconfig: make file::name a flexible array member
Call malloc() just once to allocate needed memory.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Diffstat (limited to '')
-rw-r--r-- | scripts/kconfig/expr.h | 2 | ||||
-rw-r--r-- | scripts/kconfig/util.c | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index 85e0d1ab3c8a..760b1e681b43 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h @@ -19,7 +19,7 @@ extern "C" { struct file { struct file *next; - const char *name; + char name[]; }; typedef enum tristate { diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c index 958543bb0a37..2636dccea0c9 100644 --- a/scripts/kconfig/util.c +++ b/scripts/kconfig/util.c @@ -13,6 +13,7 @@ struct file *file_lookup(const char *name) { struct file *file; + size_t len; for (file = file_list; file; file = file->next) { if (!strcmp(name, file->name)) { @@ -20,9 +21,11 @@ struct file *file_lookup(const char *name) } } - file = xmalloc(sizeof(*file)); + len = strlen(name); + file = xmalloc(sizeof(*file) + len + 1); memset(file, 0, sizeof(*file)); - file->name = xstrdup(name); + memcpy(file->name, name, len); + file->name[len] = '\0'; file->next = file_list; file_list = file; |