Subject: pkg/34040: audio/aumix breaks the terminal
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <cheusov@tut.by>
List: pkgsrc-bugs
Date: 07/19/2006 19:10:00
>Number:         34040
>Category:       pkg
>Synopsis:       audio/aumix breaks the terminal
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 19 19:10:00 +0000 2006
>Originator:     cheusov@tut.by
>Release:        NetBSD 3.0_STABLE
>Organization:
Best regards, Aleksey Cheusov.
>Environment:
System: NetBSD chen.chizhovka.net 3.0_STABLE NetBSD 3.0_STABLE (GENERIC) #2: Sun Mar 12 12:49:58 GMT 2006 cheusov@chen:/usr/src/sys/arch/i386/compile/GENERIC i386
Architecture: i386
Machine: i386
>Description:
I use aumix (from audio/aumix package) for setting audio volume.
The problem is that after exiting with 'q' my terminal (xterm)
seems broken, i.e. any pressed keys are not printed anymore,
only /usr/bin/reset helps to fix this.
>How-To-Repeat:
Just run /usr/pkg/bin/aumix and then type q, that's all.
>Fix:
The problem is that curses 'initscr' function is called twice.
This works fine with ncurses (under Linux/ncurses I don't see this bug),
but works badly under NetBSD with native curses library.

Patch follows:
Index: distinfo
===================================================================
RCS file: /cvsroot/pkgsrc/audio/aumix/distinfo,v
retrieving revision 1.5
diff -u -r1.5 distinfo
--- distinfo      23 Feb 2005 20:39:43 -0000      1.5
+++ distinfo      19 Jul 2006 19:01:52 -0000
@@ -3,4 +3,5 @@
 SHA1 (aumix-2.8.tar.bz2) = 5cea563ae91f628433a1950a36efd23681da4bf4
 RMD160 (aumix-2.8.tar.bz2) = f7ab3737af772b97359dfc5d9852d06fda05aaa5
 Size (aumix-2.8.tar.bz2) = 157503 bytes
+SHA1 (patch-aa) = 83d25c5f3a1a743201ca8b462ae4ebdd2a2b35e5
 SHA1 (patch-ad) = fc610f71143b892b68f798e3556bc756875dd26c
Index: patches/patch-aa
===================================================================
RCS file: patches/patch-aa
diff -N patches/patch-aa
--- /dev/null     1 Jan 1970 00:00:00 -0000
+++ patches/patch-aa      19 Jul 2006 19:01:52 -0000
@@ -0,0 +1,12 @@
+$NetBSD$
+
+--- src/curses.c.orig    2006-07-19 22:00:56.000000000 +0300
++++ src/curses.c
+@@ -567,7 +567,6 @@ void            DrawRecordPlayCurses(int
+ void            CloseScreenCurses(void)
+ {
+         if (interactive) {
+-                initscr();      /* Calling refresh() will cause a segfault if we do it without initializing the screen. */
+                 clear();
+                 refresh();
+                 endwin();