From db8886a34cfc026b7a95ab0256317e5ec7ce728a Mon Sep 17 00:00:00 2001
From: Lukas Fleischer <calcurse@cryptocrack.de>
Date: Wed, 5 Dec 2012 15:51:01 +0100
Subject: keys_save_bindings(): Skip unset key bindings

Saving unset key bindings currently results in a segmentation fault or
invalid key specifiers being stored. Skip these entries to avoid this.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
---
 src/keys.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/keys.c b/src/keys.c
index a908bd0..0d54701 100644
--- a/src/keys.c
+++ b/src/keys.c
@@ -547,11 +547,15 @@ void keys_popup_info(enum key key)
 void keys_save_bindings(FILE * fd)
 {
   int i;
+  char *action;
 
   EXIT_IF(fd == NULL, _("FATAL ERROR: null file pointer."));
   dump_intro(fd);
-  for (i = 0; i < NBKEYS; i++)
-    fprintf(fd, "%s  %s\n", keydef[i].label, keys_action_allkeys(i));
+  for (i = 0; i < NBKEYS; i++) {
+    action = keys_action_allkeys(i);
+    if (action)
+      fprintf(fd, "%s  %s\n", keydef[i].label, action);
+  }
 }
 
 int keys_check_missing_bindings(void)
-- 
cgit v1.2.3-70-g09d2