All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masahiro Yamada <masahiroy@kernel.org>
To: linux-kbuild@vger.kernel.org
Cc: Masahiro Yamada <masahiroy@kernel.org>, linux-kernel@vger.kernel.org
Subject: [PATCH] kconfig: remove 'const' from the return type of sym_escape_string()
Date: Mon, 27 Sep 2021 21:59:44 +0900	[thread overview]
Message-ID: <20210927125944.819010-1-masahiroy@kernel.org> (raw)

sym_escape_string() returns a malloc'ed memory, so it must be freed
when it is done.

Currently, sym_escape_string() returns the malloc'ed memory as
(const char *), then it is casted to (void *) when it is passed to
free(). This is odd.

The return type of sym_escape_string() should be (char *).

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/conf.c      | 10 +++++-----
 scripts/kconfig/confdata.c  |  8 ++++----
 scripts/kconfig/lkc_proto.h |  2 +-
 scripts/kconfig/symbol.c    |  3 ++-
 4 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index a6dad4a2e7a2..d8e1994bfed0 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -647,15 +647,15 @@ static void check_conf(struct menu *menu)
 		switch (input_mode) {
 		case listnewconfig:
 			if (sym->name) {
-				const char *str;
-
 				if (sym->type == S_STRING) {
+					char *str;
+
 					str = sym_escape_string(sym);
 					printf("%s%s=%s\n", CONFIG_, sym->name, str);
-					free((void *)str);
+					free(str);
 				} else {
-					str = sym_get_string_value(sym);
-					printf("%s%s=%s\n", CONFIG_, sym->name, str);
+					printf("%s%s=%s\n", CONFIG_, sym->name,
+					       sym_get_string_value(sym));
 				}
 			}
 			break;
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 4e053f2477f9..f7eac4beb128 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -728,7 +728,7 @@ static struct conf_printer header_printer_cb =
 static void conf_write_symbol(FILE *fp, struct symbol *sym,
 			      struct conf_printer *printer, void *printer_arg)
 {
-	const char *str;
+	char *str;
 
 	switch (sym->type) {
 	case S_UNKNOWN:
@@ -736,11 +736,11 @@ static void conf_write_symbol(FILE *fp, struct symbol *sym,
 	case S_STRING:
 		str = sym_escape_string(sym);
 		printer->print_symbol(fp, sym, str, printer_arg);
-		free((void *)str);
+		free(str);
 		break;
 	default:
-		str = sym_get_string_value(sym);
-		printer->print_symbol(fp, sym, str, printer_arg);
+		printer->print_symbol(fp, sym, sym_get_string_value(sym),
+				      printer_arg);
 	}
 }
 
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h
index 035cc522808b..7ce4b666bba8 100644
--- a/scripts/kconfig/lkc_proto.h
+++ b/scripts/kconfig/lkc_proto.h
@@ -18,7 +18,7 @@ extern struct symbol * symbol_hash[SYMBOL_HASHSIZE];
 
 struct symbol * sym_lookup(const char *name, int flags);
 struct symbol * sym_find(const char *name);
-const char * sym_escape_string(struct symbol *sym);
+char *sym_escape_string(struct symbol *sym);
 struct symbol ** sym_re_search(const char *pattern);
 const char * sym_type_name(enum symbol_type type);
 void sym_calc_value(struct symbol *sym);
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
index 4a31bb943f79..57189a1ad797 100644
--- a/scripts/kconfig/symbol.c
+++ b/scripts/kconfig/symbol.c
@@ -871,7 +871,8 @@ struct symbol *sym_find(const char *name)
 	return symbol;
 }
 
-const char *sym_escape_string(struct symbol *sym)
+/* the returned pointer must be freed on the caller side */
+char *sym_escape_string(struct symbol *sym)
 {
 	const char *in, *p;
 	size_t reslen;
-- 
2.30.2


             reply	other threads:[~2021-09-27 13:00 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-27 12:59 Masahiro Yamada [this message]
2021-09-28 10:04 ` [PATCH] kconfig: remove 'const' from the return type of sym_escape_string() Nicolas Schier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210927125944.819010-1-masahiroy@kernel.org \
    --to=masahiroy@kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.