Hello community,

here is the log from the commit of package syslinux for openSUSE:Factory 
checked in at 2014-03-25 13:20:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/syslinux (Old)
 and      /work/SRC/openSUSE:Factory/.syslinux.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "syslinux"

Changes:
--------
--- /work/SRC/openSUSE:Factory/syslinux/syslinux.changes        2014-03-06 
19:18:17.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.syslinux.new/syslinux.changes   2014-03-25 
13:20:04.000000000 +0100
@@ -1,0 +2,5 @@
+Fri Mar 21 13:10:04 CET 2014 - snw...@suse.de
+
+- timeout.diff: fix timeout counter to work more accurate (bnc #691211)
+
+-------------------------------------------------------------------

New:
----
  syslinux-4.04-timeout.diff

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ syslinux.spec ++++++
--- /var/tmp/diff_new_pack.6YHYNx/_old  2014-03-25 13:20:05.000000000 +0100
+++ /var/tmp/diff_new_pack.6YHYNx/_new  2014-03-25 13:20:05.000000000 +0100
@@ -48,6 +48,7 @@
 Patch11:        %{name}-%{version}-localboot.diff
 Patch12:        %{name}-%{version}-geometry.diff
 Patch13:        %{name}-%{version}-nostrip.diff
+Patch14:        %{name}-%{version}-timeout.diff
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
@@ -77,6 +78,7 @@
 %patch11 -p1
 %patch12 -p1
 %patch13 -p0
+%patch14 -p1
 
 %build
 cp %{SOURCE2} .

++++++ syslinux-4.04-timeout.diff ++++++
diff --git a/core/ui.inc b/core/ui.inc
index 0a4bb56..97945c9 100644
--- a/core/ui.inc
+++ b/core/ui.inc
@@ -529,30 +529,36 @@ kernel_corrupt: mov si,err_notkernel
 ; which can be adjusted by the caller based on the corresponding
 ; master variables; on return they're updated.
 ;
-; This cheats.  If we say "no timeout" we actually get a timeout of
-; 7.5 years.
-;
 getchar_timeout:
                call vgashowcursor
                call reset_idle
 
 .loop:
-               push word [__jiffies]
+               push dword [__jiffies]
                call pollchar
                jnz .got_char
                call do_idle
-               pop ax
-               cmp ax,[__jiffies]              ; Has the timer advanced?
+               pop eax
+               sub eax,[__jiffies]             ; Has the timer advanced?
                je .loop
 
-               dec dword [ThisKbdTo]
-               jz .timeout
-               dec dword [ThisTotalTo]
-               jnz .loop
+               ; more than one tick may have passed, keep the diff in eax
+               neg eax
+
+               cmp dword [ThisKbdTo],0
+               jz .chk_total
+               sub [ThisKbdTo],eax
+               jbe .timeout
+
+.chk_total:
+               cmp dword [ThisTotalTo],0
+               jz .loop
+               sub [ThisTotalTo],eax
+               ja .loop
 
 .timeout:
                ; Timeout!!!!
-               pop cx                          ; Discard return address
+               pop ecx                         ; Discard return address
                call vgahidecursor
                mov si,Ontimeout                ; Copy ontimeout command
                mov di,command_line
@@ -561,7 +567,7 @@ getchar_timeout:
                jmp command_done
 
 .got_char:
-               pop cx                          ; Discard
+               pop ecx                         ; Discard
                call getchar
                call vgahidecursor
                ret
-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to