summary refs log tree commit diff
path: root/menu.c
diff options
context:
space:
mode:
authorokan <okan>2015-03-28 22:09:10 +0000
committerokan <okan>2015-03-28 22:09:10 +0000
commit0bbe0ad98c7b8ed5d081747ee3bdb2dbf7a1b848 (patch)
tree7158e2721d00a949f5313ccaf5aa035251ed95be /menu.c
parent5b64e1540c01fb9e24dde30e05308be3d4dfc86c (diff)
downloadcwm-0bbe0ad98c7b8ed5d081747ee3bdb2dbf7a1b848.tar.gz
cwm-0bbe0ad98c7b8ed5d081747ee3bdb2dbf7a1b848.tar.xz
cwm-0bbe0ad98c7b8ed5d081747ee3bdb2dbf7a1b848.zip
Reshuffle and slightly simplify menu_complete_path(), removing an
allocation, for tab-completion; checked by Alexander Polakov as well.
Diffstat (limited to 'menu.c')
-rw-r--r--menu.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/menu.c b/menu.c
index f73bc5e..1026347 100644
--- a/menu.c
+++ b/menu.c
@@ -189,9 +189,7 @@ menu_complete_path(struct menu_ctx *mc)
 {
 	struct menu		*mi, *mr;
 	struct menu_q		 menuq;
-	char			*path = NULL;
 
-	path = xcalloc(1, sizeof(mr->text));
 	mr = xcalloc(1, sizeof(*mr));
 
 	TAILQ_INIT(&menuq);
@@ -200,17 +198,15 @@ menu_complete_path(struct menu_ctx *mc)
 	    CWM_MENU_DUMMY, search_match_path_any, NULL)) != NULL) {
 		mr->abort = mi->abort;
 		mr->dummy = mi->dummy;
-		strlcpy(path, mi->text, sizeof(mi->text));
+		if (mi->text[0] != '\0')
+			snprintf(mr->text, sizeof(mr->text), "%s \"%s\"",
+			    mc->searchstr, mi->text);
+		else if (!mr->abort)
+			strlcpy(mr->text, mc->searchstr, sizeof(mr->text));
 	}
 	
 	menuq_clear(&menuq);
 
-	if (path[0] != '\0')
-		snprintf(mr->text, sizeof(mr->text), "%s \"%s\"",
-			mc->searchstr, path);
-	else if (!mr->abort)
-		strlcpy(mr->text,  mc->searchstr, sizeof(mr->text));
-	free(path);
 	return(mr);
 }