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.scm | 2 +- gnu/installer/newt/keymap.scm | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) (limited to 'gnu') 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 @@ (define* (compute-keymap-step context) (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 @@ (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