diff options
author | Mathieu Othacehe <othacehe@gnu.org> | 2021-01-12 16:26:07 +0100 |
---|---|---|
committer | Mathieu Othacehe <othacehe@gnu.org> | 2021-01-12 16:40:27 +0100 |
commit | bb4e67415eb6d9871ee1b50b0a01e08c19f4809a (patch) | |
tree | 11b6f0c7386119f69f387ed090c9d13e90b9c3c4 | |
parent | 55157c90711662c24c7627189020e3a5aeafa2ba (diff) |
installer: Fix crash in parameters menu.
Fixes: <https://issues.guix.gnu.org/45378>.
* gnu/installer/newt/keymap.scm (run-layout-page): Return false when
"Continue" button is pressed.
(run-keymap-page): Do not try to compute variants if layout is false. Also do
not try to format the result if layout is false.
* gnu/installer.scm (compute-keymap-step): Do not apply keymap if
"run-keymap-page" returns false.
-rw-r--r-- | gnu/installer.scm | 2 | ||||
-rw-r--r-- | gnu/installer/newt/keymap.scm | 21 |
2 files changed, 14 insertions, 9 deletions
diff --git a/gnu/installer.scm b/gnu/installer.scm index 7863edbb67..d2be4b34f9 100644 --- a/gnu/installer.scm +++ b/gnu/installer.scm @@ -187,7 +187,7 @@ selected keymap." (lambda (models layouts) ((installer-keymap-page current-installer) layouts '#$context))))) - (#$apply-keymap result) + (and result (#$apply-keymap result)) result))) (define (installer-steps) diff --git a/gnu/installer/newt/keymap.scm b/gnu/installer/newt/keymap.scm index 1b3af2f158..92f7f46f34 100644 --- a/gnu/installer/newt/keymap.scm +++ b/gnu/installer/newt/keymap.scm @@ -56,7 +56,7 @@ different layout at any time from the parameters menu."))) (else (G_ "Exit"))) #:button-callback-procedure (case context - ((param) (const #t)) + ((param) (const #f)) (else (lambda _ (raise @@ -183,7 +183,9 @@ options." (compute (lambda (result _) (let* ((layout (result-step result 'layout)) - (variants (x11-keymap-layout-variants layout))) + (variants (if layout + (x11-keymap-layout-variants layout) + '()))) ;; Return #f if the layout does not have any variant. (and (not (null? variants)) (run-variant-page @@ -196,16 +198,19 @@ options." (gettext (x11-keymap-layout-description layout) "xkeyboard-config"))))))))))) - (define (format-result result) - (let ((layout (x11-keymap-layout-name - (result-step result 'layout))) - (variant (and=> (result-step result 'variant) + (define (format-result layout variant) + (let ((layout (x11-keymap-layout-name layout)) + (variant (and=> variant (lambda (variant) (gettext (x11-keymap-variant-name variant) "xkeyboard-config"))))) (toggleable-latin-layout layout variant))) - (format-result - (run-installer-steps #:steps keymap-steps))) + + (let* ((result (run-installer-steps #:steps keymap-steps)) + (layout (result-step result 'layout)) + (variant (result-step result 'variant))) + (and layout + (format-result layout variant)))) (define (keyboard-layout->configuration keymap) "Return the operating system configuration snippet to install KEYMAP." |