From 706a6e1beb322c2681b6252a93c3577e7d306d9c Mon Sep 17 00:00:00 2001
From: Klaus Schmidinger <vdr@tvdr.de>
Date: Sun, 8 Sep 2002 14:51:28 +0200
Subject: Fixed a crash when entering an integer value outside the limits

---
 CONTRIBUTORS | 1 +
 HISTORY      | 2 ++
 menuitems.c  | 9 ++++++---
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 28da4004..58bdd076 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -145,6 +145,7 @@ Stefan Huelswitt <huels@iname.com>
  option can't be accessed
  for implementing several replay modes to allow players that play only audio
  for improving cCondVar::Wait() and implementing cCondVar::TimedWait()
+ for reporting a bug when entering an integer value outside the limit
 
 Ulrich R�der <roeder@efr-net.de>
  for pointing out that there are channels that have a symbol rate higher than
diff --git a/HISTORY b/HISTORY
index fc78e6e6..ad2354df 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1456,3 +1456,5 @@ Video Disk Recorder Revision History
   that are currently not available (for instance because all devices are
   recording and these channels are on different transponders).
 - Implemented an SPU decoder (thanks to Andreas Schultz).
+- Fixed a crash when entering an integer value outside the limits (thanks to
+  Stefan Huelswitt for reporting this one).
diff --git a/menuitems.c b/menuitems.c
index 8c7848f5..97d81ad1 100644
--- a/menuitems.c
+++ b/menuitems.c
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: menuitems.c 1.8 2002/08/15 11:27:57 kls Exp $
+ * $Id: menuitems.c 1.9 2002/09/08 14:51:28 kls Exp $
  */
 
 #include "menuitems.h"
@@ -68,7 +68,7 @@ eOSState cMenuEditIntItem::ProcessKey(eKeys Key)
            *value = 0;
            fresh = false;
            }
-        newValue = *value  * 10 + (Key - k0);
+        newValue = *value * 10 + (Key - k0);
         }
      else if (NORMALKEY(Key) == kLeft) { // TODO might want to increase the delta if repeated quickly?
         newValue = *value - 1;
@@ -78,8 +78,11 @@ eOSState cMenuEditIntItem::ProcessKey(eKeys Key)
         newValue = *value + 1;
         fresh = true;
         }
-     else
+     else {
+        if (*value < min) { *value = min; Set(); }
+        if (*value > max) { *value = max; Set(); }
         return state;
+        }
      if ((!fresh || min <= newValue) && newValue <= max) {
         *value = newValue;
         Set();
-- 
cgit v1.2.3