--- a/browserutilities/recenturlstore/RecentUrlSrc/RecentUrlStore.cpp Tue Aug 31 16:17:46 2010 +0300
+++ b/browserutilities/recenturlstore/RecentUrlSrc/RecentUrlStore.cpp Wed Sep 01 12:28:30 2010 +0100
@@ -17,10 +17,8 @@
*
*/
-
-
// INCLUDE FILES
-#include "RecentUrlStore.h"
+#include <recenturlstore.h>
// EXTERNAL DATA STRUCTURES
@@ -246,8 +244,21 @@
HBufC* domain = aUrl.Mid(domainStart,domainLength).AllocLC();
domain->Des().LowerCase();
- HBufC* title = aTitle.Left(titleLength).AllocLC();
-
+
+ HBufC* title;
+ TInt pos = aTitle.Find(_L("'"));
+ if(pos >= 0)
+ {
+ TBuf<KTitleSize> buf;
+ TChar ch = '\'';
+ TInt nwLen = InsertEscapeSequence(ch,(TUint16*)buf.Ptr(),aTitle);
+ title = HBufC::NewLC(nwLen);
+ TPtr myPtr = title->Des();
+ myPtr.Copy(buf.Ptr(),nwLen);
+ }
+ else
+ title = aTitle.Left(titleLength).AllocLC();
+
// delete and re-insert
iSQLStatement.Format(KSQLDelete, &aUrl);
dataBase.Execute(iSQLStatement);
@@ -258,7 +269,35 @@
}
}
}
-
+
+//-----------------------------------------------------------------------------
+// CRecentUrlStore::InsertEscapeSequence
+// Insert the EscapeSequence.
+//-----------------------------------------------------------------------------
+TInt CRecentUrlStore::InsertEscapeSequence(TChar aChar,TUint16* aDestPtr,const TDesC& aString)
+ {
+ TUint16* src_ptr = (TUint16*)aString.Ptr();
+
+ TInt src_iter = 0;
+ TInt dest_iter = 0;
+ TInt len = aString.Length();
+
+ while((src_iter <= len) && (dest_iter <= KTitleSize))
+ {
+ *aDestPtr++ = *src_ptr++;
+ src_iter++;
+ dest_iter++;
+ if(*(src_ptr-1)==aChar && dest_iter<=KTitleSize)
+ {
+ *aDestPtr++ = aChar;
+ dest_iter++;
+ }
+ }
+ --src_iter;
+ return (--dest_iter);
+
+ }
+
//-----------------------------------------------------------------------------
// CRecentUrlStore::ClearData
// Clear the store.