From 70229cbbfc2d6e1a8c013aebd00ad9a593fcc350 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 22 Apr 2013 08:09:54 -0400
Subject: [PATCH] Fix incorrect handling of some specific links (#1489060)

---
 CHANGELOG                                       |    1 +
 tests/Framework/StringReplacer.php              |    2 ++
 program/lib/Roundcube/rcube_string_replacer.php |    4 ++--
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 7743032..347c731 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix incorrect handling of some specific links (#1489060)
 - Fix incorrect handling of leading spaces in text wrapping
 - Fix unintentional messages list jumps on click in Internet Explorer (#1489056)
 - Fix list of required configuration options (#1489055)
diff --git a/program/lib/Roundcube/rcube_string_replacer.php b/program/lib/Roundcube/rcube_string_replacer.php
index b8768bc..0fc90a5 100644
--- a/program/lib/Roundcube/rcube_string_replacer.php
+++ b/program/lib/Roundcube/rcube_string_replacer.php
@@ -95,12 +95,12 @@
             $attrib = (array)$this->options['link_attribs'];
             $attrib['href'] = $url_prefix . $url;
 
-            $i = $this->add($prefix . html::a($attrib, rcube::Q($url)) . $suffix);
+            $i = $this->add(html::a($attrib, rcube::Q($url)) . $suffix);
         }
 
         // Return valid link for recognized schemes, otherwise
         // return the unmodified string for unrecognized schemes.
-        return $i >= 0 ? $this->get_replacement($i) : $matches[0];
+        return $i >= 0 ? $prefix . $this->get_replacement($i) : $matches[0];
     }
 
     /**
diff --git a/tests/Framework/StringReplacer.php b/tests/Framework/StringReplacer.php
index 95c5922..dc76387 100644
--- a/tests/Framework/StringReplacer.php
+++ b/tests/Framework/StringReplacer.php
@@ -37,6 +37,8 @@
             array('http://link.com?(link)', '<a href="http://link.com?(link)">http://link.com?(link)</a>'),
             array('http://<test>', 'http://<test>'),
             array('http://', 'http://'),
+            array('1@1.com www.domain.tld', '<a href="mailto:1@1.com">1@1.com</a> <a href="http://www.domain.tld">www.domain.tld</a>'),
+            array(' www.domain.tld ', ' <a href="http://www.domain.tld">www.domain.tld</a> '),
         );
     }
 

--
Gitblit v1.9.1