[Libreoffice-commits] .: editeng/source

Michael Meeks michael at kemper.freedesktop.org
Thu Apr 26 04:55:52 PDT 2012


 editeng/source/misc/svxacorr.cxx |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

New commits:
commit b269dced445494891a8e6e8d1d62b931a31dddbd
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Thu Apr 26 11:59:02 2012 +0100

    fdo#46805 - special-case appending items to autocorrect lists

diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index f459af0..ce5c71c 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -68,6 +68,7 @@
 #include <com/sun/star/ucb/NameClash.hpp>
 #include <xmloff/xmltoken.hxx>
 #include <vcl/help.hxx>
+#include <rtl/logfile.hxx>
 
 #define CHAR_HARDBLANK      ((sal_Unicode)0x00A0)
 
@@ -233,15 +234,27 @@ void SvxAutocorrWordList::DeleteAndDestroy( sal_uInt16 nP, sal_uInt16 nL )
 }
 
 
+// Keep the list sorted ...
 sal_Bool SvxAutocorrWordList::Seek_Entry( const SvxAutocorrWordPtr aE, sal_uInt16* pP ) const
 {
     register sal_uInt16 nO  = SvxAutocorrWordList_SAR::Count(),
             nM,
             nU = 0;
+
     if( nO > 0 )
     {
         CollatorWrapper& rCmp = ::GetCollatorWrapper();
         nO--;
+
+        // quick check of the end of the list
+        if (rCmp.compareString( aE->GetShort(),
+                                (*((SvxAutocorrWordPtr*)pData + nO))->GetShort() ) > 0)
+        {
+            if( pP ) *pP = nO + 1;
+            return sal_False;
+        }
+
+        // Incredibly crude sort algorithm, should use some partitioning search.
         while( nU <= nO )
         {
             nM = nU + ( nO - nU ) / 2;
@@ -2169,6 +2182,7 @@ SvxAutocorrWordList* SvxAutoCorrectLanguageLists::LoadAutocorrWordList()
         OSL_ENSURE( xXMLParser.is(), "XMLReader::Read: com.sun.star.xml.sax.Parser service missing" );
         if( xXMLParser.is() )
         {
+            RTL_LOGFILE_PRODUCT_CONTEXT( aLog, "AutoCorrect Import" );
             uno::Reference< xml::sax::XDocumentHandler > xFilter = new SvXMLAutoCorrectImport( xServiceFactory, pAutocorr_List, rAutoCorrect, xStg );
 
             // connect parser and filter


More information about the Libreoffice-commits mailing list