diff --git a/src/nano.c b/src/nano.c
index 260784ce4ec4fad2bffe625ecf95153bb394a291..678dc987d4e0a98ae7cc2d9cb76eb7766d818bb1 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1727,9 +1727,12 @@ int do_input(bool allow_funcs)
 	if (shortcut == NULL)
 		pletion_line = NULL;
 	else {
-		if (ISSET(VIEW_MODE) && !sctofunc(shortcut)->viewok) {
-			print_view_warning();
-			return ERR;
+		if (ISSET(VIEW_MODE)) {
+			const subnfunc *f = sctofunc(shortcut);
+			if (f && !f->viewok) {
+				print_view_warning();
+				return ERR;
+			}
 		}
 
 		/* If the function associated with this shortcut is
@@ -1801,8 +1804,11 @@ int do_input(bool allow_funcs)
 				wrap_reset();
 #endif
 #ifdef ENABLE_COLOR
-			if (!refresh_needed && !sctofunc(shortcut)->viewok)
-				check_the_multis(openfile->current);
+			if (!refresh_needed) {
+				const subnfunc *f = sctofunc(shortcut);
+				if (f && !f->viewok)
+					check_the_multis(openfile->current);
+			}
 #endif
 			if (!refresh_needed && (shortcut->func == do_delete ||
 									shortcut->func == do_backspace))