Package: dialog Version: 1.3-20190211-ca-003-1 Severity: normal Tags: patch upstream
The --aspect and --tab-len options are processed in the process_common_options subroutine called from main. The code changes the corresponding members of the dialog_state structure. After this has happened, the code in main calls then init_dialog routine which unconditionally sets both the aspect ratio and the tab len to its default value, thereby overwriting any changes which happened as part of options processing. The patch fixes this by changing the init_dialog code such that it only sets these members to their default values if they don't have a value already (ie, if their value is 0). It also removes a redundant "set aspect ratio to default if still 0" statement from process_common_options. -- System Information: Debian Release: 10.5 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 4.19.0-8-amd64 (SMP w/24 CPU cores) Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages dialog depends on: ii debianutils 4.8.6.1 ii libc6 2.28-10 ii libncursesw6 6.1+20181013-2+deb10u2 ii libtinfo6 6.1+20181013-2+deb10u2 dialog recommends no packages. dialog suggests no packages. -- no debconf information
diff --git a/dialog.c b/dialog.c index b6fa6d4..6ec740d 100644 --- a/dialog.c +++ b/dialog.c @@ -1827,9 +1827,6 @@ process_common_options(int argc, char **argv, int offset, bool output) offset++; } - if (dialog_state.aspect_ratio == 0) - dialog_state.aspect_ratio = DEFAULT_ASPECT_RATIO; - return offset; } diff --git a/util.c b/util.c index 64b67d9..e0a5938 100644 --- a/util.c +++ b/util.c @@ -322,8 +322,10 @@ init_dialog(FILE *input, FILE *output) setlocale(LC_ALL, ""); dialog_state.output = output; - dialog_state.tab_len = TAB_LEN; - dialog_state.aspect_ratio = DEFAULT_ASPECT_RATIO; + if (dialog_state.tab_len == 0) + dialog_state.tab_len = TAB_LEN; + if (dialog_state.aspect_ratio == 0) + dialog_state.aspect_ratio = DEFAULT_ASPECT_RATIO; #ifdef HAVE_COLOR dialog_state.use_colors = USE_COLORS; /* use colors by default? */ dialog_state.use_shadow = USE_SHADOW; /* shadow dialog boxes by default? */