(kbd_buffer_get_event): Return Qnil when current time is exactly equal to
authorEli Zaretskii <eliz@gnu.org>
Sat, 5 Aug 2006 12:00:32 +0000 (12:00 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 5 Aug 2006 12:00:32 +0000 (12:00 +0000)
end_time, not only when it is past that.

src/ChangeLog
src/keyboard.c

index aa02512..2810954 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * keyboard.c (kbd_buffer_get_event): Return Qnil when current time
+       is exactly equal to end_time, not only when it is past that.
+
 2006-08-04  Chong Yidong  <cyd@stupidchicken.com>
 
        * keyboard.c (read_char): Rebalance specpdl after receiving jump.
index a4e1c98..6f12994 100644 (file)
@@ -3954,13 +3954,15 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
        {
          EMACS_TIME duration;
          EMACS_GET_TIME (duration);
-         EMACS_SUB_TIME (duration, *end_time, duration);
-         if (EMACS_TIME_NEG_P (duration))
-           return Qnil;
+         if (EMACS_TIME_GE (duration, *end_time))
+           return Qnil;        /* finished waiting */
          else
-           wait_reading_process_output (EMACS_SECS (duration),
-                                        EMACS_USECS (duration), 
-                                        -1, 1, Qnil, NULL, 0);
+           {
+             EMACS_SUB_TIME (duration, *end_time, duration);
+             wait_reading_process_output (EMACS_SECS (duration),
+                                          EMACS_USECS (duration),
+                                          -1, 1, Qnil, NULL, 0);
+           }
        }
       else
        wait_reading_process_output (0, 0, -1, 1, Qnil, NULL, 0);