From dd29c56993c713c6334e82a3240152fd362deef3 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Mon, 4 Jan 2016 09:52:43 +0000
Subject: [PATCH] Rewriting the loop, and constifying the input of sctofunc().

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5530 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog    | 1 +
 src/global.c | 8 ++++----
 src/nano.c   | 2 +-
 src/prompt.c | 2 +-
 src/proto.h  | 2 +-
 5 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 763a5716..8dcf2325 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2016-01-04  Benno Schulenberg  <bensberg@justemail.net>
 	* src/global.c (shortcut_init): Nowadays the functions are defined
 	only once, so there is no longer any need to free existing ones.
+	* src/global.c (sctofunc): Rewrite the loop, and constify the input.
 
 2016-01-04  Mike Frysinger  <vapier@gentoo.org>
 	* src/global.c (strtosc, strtomenu): Constify the input parameter.
diff --git a/src/global.c b/src/global.c
index 4a41659a..e4a13280 100644
--- a/src/global.c
+++ b/src/global.c
@@ -1260,12 +1260,12 @@ void set_spell_shortcuts(void)
 }
 #endif
 
-const subnfunc *sctofunc(sc *s)
+const subnfunc *sctofunc(const sc *s)
 {
-    subnfunc *f;
+    subnfunc *f = allfuncs;
 
-    for (f = allfuncs; f != NULL && s->scfunc != f->scfunc; f = f->next)
-	;
+    while (f != NULL && f->scfunc != s->scfunc)
+	f = f->next;
 
     return f;
 }
diff --git a/src/nano.c b/src/nano.c
index 3007f6c7..d4366b93 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1702,7 +1702,7 @@ int do_input(bool allow_funcs)
 	}
 
 	if (have_shortcut) {
-	    const subnfunc *f = sctofunc((sc *)s);
+	    const subnfunc *f = sctofunc(s);
 	    /* If the function associated with this shortcut is
 	     * cutting or copying text, remember this. */
 	    if (s->scfunc == do_cut_text_void
diff --git a/src/prompt.c b/src/prompt.c
index 448ff7f6..dbe84546 100644
--- a/src/prompt.c
+++ b/src/prompt.c
@@ -210,7 +210,7 @@ int do_statusbar_input(bool *ran_func, bool *finished,
 		 * functions and setting finished to TRUE to indicate
 		 * that we're done after running or trying to run their
 		 * associated functions. */
-		f = sctofunc((sc *) s);
+		f = sctofunc(s);
 		if (s->scfunc != NULL) {
 		    *ran_func = TRUE;
 		    if (f && (!ISSET(VIEW_MODE) || f->viewok) &&
diff --git a/src/proto.h b/src/proto.h
index 07e5eefe..74280edd 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -370,7 +370,7 @@ void shortcut_init(void);
 void set_lint_or_format_shortcuts(void);
 void set_spell_shortcuts(void);
 #endif
-const subnfunc *sctofunc(sc *s);
+const subnfunc *sctofunc(const sc *s);
 const char *flagtostr(int flag);
 sc *strtosc(const char *input);
 int strtomenu(const char *input);
-- 
GitLab