From db108e37793c7f8fc8ba11f00d0561d1f0bd32c0 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 23 May 2013 02:59:27 -0400
Subject: [PATCH] Fix another text wrapping issue (wrong handling of long unwrappable lines)

---
 program/steps/mail/func.inc          |    6 +++---
 tests/Framework/Mime.php             |    4 ++++
 program/lib/Roundcube/rcube_mime.php |    4 ++++
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/program/lib/Roundcube/rcube_mime.php b/program/lib/Roundcube/rcube_mime.php
index d413c0a..5258af5 100644
--- a/program/lib/Roundcube/rcube_mime.php
+++ b/program/lib/Roundcube/rcube_mime.php
@@ -658,6 +658,10 @@
                             $subString = $substr_func($subString, 0, $spacePos, $charset);
                             $cutLength = $spacePos + 1;
                         }
+                        else if ($cut === false && $breakPos === false) {
+                            $subString = $string;
+                            $cutLength = null;
+                        }
                         else if ($cut === false) {
                             $spacePos = $strpos_func($string, ' ', 0, $charset);
 
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 661d3fb..ab4b411 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -1516,11 +1516,11 @@
 /**
  * Wrap text to a given number of characters per line
  * but respect the mail quotation of replies messages (>).
- * Finally add another quotation level by prpending the lines
+ * Finally add another quotation level by prepending the lines
  * with >
  *
  * @param string Text to wrap
- * @param int The line width
+ * @param int    The line width
  * @return string The wrapped text
  */
 function rcmail_wrap_and_quote($text, $length = 72)
@@ -1536,7 +1536,7 @@
       $line = '>' . rtrim($line);
     else if (mb_strlen($line) > $max) {
       $newline = '';
-      foreach(explode("\n", rc_wordwrap($line, $length - 2)) as $l) {
+      foreach (explode("\n", rc_wordwrap($line, $length - 2)) as $l) {
         if (strlen($l))
           $newline .= '> ' . $l . "\n";
         else
diff --git a/tests/Framework/Mime.php b/tests/Framework/Mime.php
index d9f4163..4db1856 100644
--- a/tests/Framework/Mime.php
+++ b/tests/Framework/Mime.php
@@ -193,6 +193,10 @@
                 array("-------\nabc def", 5),
                 "-------\nabc\ndef",
             ),
+            array(
+                array("http://xx.xxx.xx.xxx:8080/addressbooks/roundcubexxxxx%40xxxxxxxxxxxxxxxxxxxxxxx.xx.xx/testing/", 70),
+                "http://xx.xxx.xx.xxx:8080/addressbooks/roundcubexxxxx%40xxxxxxxxxxxxxxxxxxxxxxx.xx.xx/testing/",
+            ),
         );
 
         foreach ($samples as $sample) {

--
Gitblit v1.9.1