From 4b734374fb2e26ef54414c8f0b933271fdf58c3b Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Thu, 20 Feb 2014 14:16:35 -0500 Subject: [PATCH] emacs: Fix exception when fetching empty or unconfigured settings When "notmuch config" is called with the name of an empty or unconfigured setting, it prints nothing (not even a new line). Previously, `notmuch-config-get' assumed it would always print a newline. As a result, when `notmuch-config-get' was called with the name of an empty of unconfigured setting, it would attempt to (substring "" 0 -1) to strip the newline, which would fail with a (args-out-of-range "" 0 -1) exception. Fix this by only stripping the newline if there actually is one. --- emacs/notmuch-lib.el | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el index fa35fa9f..09110b53 100644 --- a/emacs/notmuch-lib.el +++ b/emacs/notmuch-lib.el @@ -198,8 +198,13 @@ on the command line, and then retry your notmuch command"))) (defun notmuch-config-get (item) "Return a value from the notmuch configuration." - ;; Trim off the trailing newline - (substring (notmuch-command-to-string "config" "get" item) 0 -1)) + (let* ((val (notmuch-command-to-string "config" "get" item)) + (len (length val))) + ;; Trim off the trailing newline (if the value is empty or not + ;; configured, there will be no newline) + (if (and (> len 0) (= (aref val (- len 1)) ?\n)) + (substring val 0 -1) + val))) (defun notmuch-database-path () "Return the database.path value from the notmuch configuration." -- 2.43.0