diff --git a/st.c b/st.c
index 9b77a0b..8f6aa04 100644
--- a/st.c
+++ b/st.c
@@ -230,6 +230,7 @@ void
 xbell(void) {
 	XSetForeground(xw.dis, dc.gc, dc.col[BellCol]);
 	XFillRectangle(xw.dis, xw.win, dc.gc, BORDER, BORDER, xw.bufw, xw.bufh);
+	XFlush(xw.dis);
 	usleep(BellTime);
 	draw(SCREEN_REDRAW);
 }
@@ -1293,7 +1294,7 @@ run(void) {
 		FD_ZERO(&rfd);
 		FD_SET(cmdfd, &rfd);
 		FD_SET(xfd, &rfd);
-		if(select(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, NULL) == -1) {
+		if(select(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, NULL) < 0) {
 			if(errno == EINTR)
 				continue;
 			die("select failed: %s\n", SERRNO);