[PATCH 2/2] blobmsg: Don't do at run-time what can be done at compile-time

Philip Prindeville philipp at redfish-solutions.com
Fri Apr 14 11:37:06 PDT 2023


From: Philip Prindeville <philipp at redfish-solutions.com>

Repeatedly calling a run-time function like strlen() on an
invariant value is inefficient, especially if that value can be
computed once (at initialization) or better yet, computed at
compile-time.

Signed-off-by: Philip Prindeville <philipp at redfish-solutions.com>
---
 blobmsg_json.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/blobmsg_json.c b/blobmsg_json.c
index dce81e991ef7b83ac4906bca6f875369d3057f36..ec8b482c30c96a355aca58651632bc509a16bedf 100644
--- a/blobmsg_json.c
+++ b/blobmsg_json.c
@@ -151,15 +151,15 @@ static bool blobmsg_puts(struct strbuf *s, const char *c, int len)
 
 static void add_separator(struct strbuf *s)
 {
-	const char *indent_chars = "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
+	const char indent_chars[] = "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
 	size_t len;
 
 	if (!s->indent)
 		return;
 
 	len = s->indent_level + 1;
-	if (len > strlen(indent_chars))
-		len = strlen(indent_chars);
+	if (len > sizeof(indent_chars) - 1)
+		len = sizeof(indent_chars) - 1;
 
 	blobmsg_puts(s, indent_chars, len);
 }
-- 
2.34.1




More information about the openwrt-devel mailing list