From ae208771e8f6f75c655949252f4e9b3a55b6ef8c Mon Sep 17 00:00:00 2001
From: Klaus Schmidinger <vdr@tvdr.de>
Date: Sun, 7 Apr 2013 14:54:15 +0200
Subject: Fixed an endless loop in cTextWrapper::Set() in case the given Width
 is smaller than one character

---
 CONTRIBUTORS | 4 ++++
 HISTORY      | 4 +++-
 font.c       | 7 +++----
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 780ad5ff..303ef673 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -3135,3 +3135,7 @@ Zoran Turalija <zoran.turalija@gmail.com>
  for translating OSD texts to the Serbian language
  for adding maximum SNR and signal strength value for TechniSat SkyStar HD2
  for pointing out that the language file sr_SR.po should be renamed to sr_RS.po
+
+Stefan Braun <louis.braun@gmx.de>
+ for reporting an endless loop in cTextWrapper::Set() in case the given Width is smaller
+ than one character
diff --git a/HISTORY b/HISTORY
index 123046bf..07621a77 100644
--- a/HISTORY
+++ b/HISTORY
@@ -7783,6 +7783,8 @@ Video Disk Recorder Revision History
 - Bumped all version numbers to 2.0.0.
 - Official release.
 
-2013-04-05: Version 2.0.1
+2013-04-07: Version 2.0.1
 
 - Fixed initializing cDevice::keepTracks.
+- Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than
+  one character (reported by Stefan Braun).
diff --git a/font.c b/font.c
index 0bcdc9bb..c6400d4e 100644
--- a/font.c
+++ b/font.c
@@ -6,7 +6,7 @@
  *
  * BiDi support by Osama Alrawab <alrawab@hotmail.com> @2008 Tripoli-Libya.
  *
- * $Id: font.c 2.13 2012/06/02 13:38:28 kls Exp $
+ * $Id: font.c 2.13.1.1 2013/04/07 14:54:15 kls Exp $
  */
 
 #include "font.h"
@@ -592,7 +592,7 @@ void cTextWrapper::Set(const char *Text, const cFont *Font, int Width)
             p = Blank;
             continue;
             }
-         else {
+         else if (w > 0) { // there has to be at least one character before the newline
             // Here's the ugly part, where we don't have any whitespace to
             // punch in a newline, so we need to make room for it:
             if (Delim)
@@ -608,8 +608,7 @@ void cTextWrapper::Set(const char *Text, const cFont *Font, int Width)
             continue;
             }
          }
-      else
-         w += cw;
+      w += cw;
       if (strchr("-.,:;!?_", *p)) {
          Delim = p;
          Blank = NULL;
-- 
cgit v1.2.3