From bb4e67415eb6d9871ee1b50b0a01e08c19f4809a Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Tue, 12 Jan 2021 16:26:07 +0100 Subject: installer: Fix crash in parameters menu. Fixes: . * 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. --- gnu/installer/newt/keymap.scm | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'gnu/installer') 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 @@ (define (run-layout-page layouts layout->text context) (else (G_ "Exit"))) #:button-callback-procedure (case context - ((param) (const #t)) + ((param) (const #f)) (else (lambda _ (raise @@ -183,7 +183,9 @@ (define keymap-steps (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 @@ (define keymap-steps (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." -- cgit v1.2.3