Bug#470882: /dev/gpmctl freezes acknowledge

Samuel Thibault samuel.thibault at ens-lyon.org
Mon Nov 24 00:11:20 UTC 2008


clone 470882 -1
reassign -1 ncurses
retitle -1 ncurses should check the value returned by Gpm_GetEvent()
thanks

Gerfried Fuchs, le Sat 22 Nov 2008 17:44:07 +0100, a écrit :
>  Ah, right. And aptitude does behave false here too (last two lines from
> strace):
> 
> write(2, "Uncaught exception: Unable to read from stdin: Bad file descriptor\n"..., 67) = 67
> exit_group(-1)      = ?
> 
>  I guess we need to clone the bug to there, too, or rather libncurses
> through which it seems to use gpm, it doesn't directly depend on libgpm.

Ah, right, doing so with a patch.

>  Not sure what other applications might be affected by it and should get
> addressed, too ...

Well, all the rdeps :/

Samuel
-------------- next part --------------
--- ncurses/base/lib_mouse.c.orig	2008-11-24 00:29:19.000000000 +0100
+++ ncurses/base/lib_mouse.c	2008-11-24 00:31:12.000000000 +0100
@@ -651,7 +651,15 @@
 	    /* query server for event, return TRUE if we find one */
 	    Gpm_Event ev;
 
-	    if (my_Gpm_GetEvent(&ev) == 1) {
+	    if (sp->_mouse_fd == -1)
+		break;
+
+	    switch (my_Gpm_GetEvent(&ev)) {
+	    case 0:
+		/* Connection closed, drop the mouse. */
+		sp->_mouse_fd = -1;
+		break;
+	    case 1:
 		/* there's only one mouse... */
 		eventp->id = NORMAL_EVENT;
 
@@ -684,6 +692,7 @@
 		/* bump the next-free pointer into the circular list */
 		sp->_mouse_eventp = eventp = NEXT(eventp);
 		result = TRUE;
+		break;
 	    }
 	}
 	break;


More information about the pkg-gpm-devel mailing list