Update SNAPSHOT for OpenOffice 4.1.2-RC3.

git-svn-id: https://svn.apache.org/repos/asf/openoffice/tags/SNAPSHOT@1709699 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/main/NOTICE b/main/NOTICE
index 52b20ee..075ff93 100644
--- a/main/NOTICE
+++ b/main/NOTICE
@@ -1,5 +1,5 @@
 Apache OpenOffice (http://www.openoffice.org)
-Copyright 2011, 2014 The Apache Software Foundation
+Copyright 2011, 2015 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
diff --git a/main/extensions.lst b/main/extensions.lst
index 736da8f..b7e94a8 100644
--- a/main/extensions.lst
+++ b/main/extensions.lst
@@ -137,7 +137,7 @@
 
 # Portuguese (European).
 [ language=pt || language=pt_PT ]
-    c29cd2b68639b4fe78e98f88f1b4dd8e http://sourceforge.net/projects/aoo-extensions/files/1196/30/oo3x-pt-pt-14.7.8.2.oxt/download "dict-pt.oxt"
+    290d182dfad2c65ae2103228a8ed355f http://sourceforge.net/projects/aoo-extensions/files/1196/36/oo3x-pt-pt-15.10.3.1.oxt/download "dict-pt.oxt"
 
 # Catalan.
 [ language=ca ]
diff --git a/main/i18npool/source/search/textsearch.cxx b/main/i18npool/source/search/textsearch.cxx
index ec16d4f..6b646d1 100644
--- a/main/i18npool/source/search/textsearch.cxx
+++ b/main/i18npool/source/search/textsearch.cxx
@@ -241,10 +241,18 @@
 
         sres = (this->*fnForward)( in_str, newStartPos, newEndPos );
 
+        sal_Int32 nOffsetLength = offset.getLength();
+        sal_Int32 nStartOffset = 0;
         for ( int k = 0; k < sres.startOffset.getLength(); k++ )
         {
-            if (sres.startOffset[k])
-	      sres.startOffset[k] = offset[sres.startOffset[k]];
+            nStartOffset = sres.startOffset[k];
+            if ( nStartOffset )
+            {
+                if ( nStartOffset < nOffsetLength )
+                    sres.startOffset[k] = offset[nStartOffset];
+                else
+                    sres.startOffset[k] = offset[offset.getLength()-1] +1;
+            }
             // JP 20.6.2001: end is ever exclusive and then don't return
             //               the position of the next character - return the
             //               next position behind the last found character!
@@ -330,6 +338,8 @@
 
         sres = (this->*fnBackward)( in_str, newStartPos, newEndPos );
 
+        sal_Int32 nOffsetLength = offset.getLength();
+        sal_Int32 nEndOffset = 0;
         for ( int k = 0; k < sres.startOffset.getLength(); k++ )
         {
             if (sres.startOffset[k])
@@ -338,8 +348,14 @@
             //               the position of the next character - return the
             //               next position behind the last found character!
             //               "a b c" find "b" must return 2,3 and not 2,4!!!
-            if (sres.endOffset[k])
-	      sres.endOffset[k] = offset[sres.endOffset[k]];
+            nEndOffset = sres.endOffset[k];
+            if ( nEndOffset )
+            {
+                if ( nEndOffset < nOffsetLength )
+                    sres.endOffset[k] = offset[nEndOffset];
+                else
+                    sres.endOffset[k] = offset[offset.getLength()-1] +1;
+            }
         }
     }
     else
diff --git a/main/sal/osl/unx/socket.c b/main/sal/osl/unx/socket.c
index 8ebe30c..1f8aaab 100644
--- a/main/sal/osl/unx/socket.c
+++ b/main/sal/osl/unx/socket.c
@@ -490,7 +490,7 @@
     pSocket->m_CallbackArg = 0;
 	pSocket->m_nRefCount = 1;
 
-#if defined(LINUX)
+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT
     pSocket->m_bIsAccepting = sal_False;
 #endif
 
@@ -1824,13 +1824,13 @@
 {
 	if( pSocket && 0 == osl_decrementInterlockedCount( &(pSocket->m_nRefCount) ) )
 	{
-#if defined(LINUX)
+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT
     if ( pSocket->m_bIsAccepting == sal_True )
     {
         OSL_ENSURE(0, "osl_destroySocket : attempt to destroy socket while accepting\n");
         return;
     }
-#endif /* LINUX */
+#endif /* CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT */
 		osl_closeSocket( pSocket );
 		__osl_destroySocketImpl( pSocket );
 	}
@@ -1858,7 +1858,7 @@
 
     pSocket->m_Socket = OSL_INVALID_SOCKET;
 
-#if defined(LINUX)
+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT
     pSocket->m_bIsInShutdown = sal_True;
 
     if ( pSocket->m_bIsAccepting == sal_True )
@@ -1904,7 +1904,7 @@
         }
         pSocket->m_bIsAccepting = sal_False;
     }
-#endif /* LINUX */
+#endif /* CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT */
 
 	/* registrierten Callback ausfuehren */
 	if (pSocket->m_CloseCallback != NULL)
@@ -2185,9 +2185,9 @@
 	}
 
     pSocket->m_nLastError=0;
-#if defined(LINUX)
+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT
     pSocket->m_bIsAccepting = sal_True;
-#endif /* LINUX */
+#endif /* CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT */
 
 	if( ppAddr && *ppAddr )
 	{
@@ -2208,23 +2208,23 @@
         pSocket->m_nLastError=errno;
 		OSL_TRACE("osl_acceptConnectionOnSocket : accept error '%s'\n",strerror(errno));
 
-#if defined(LINUX)
+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT
         pSocket->m_bIsAccepting = sal_False;
-#endif /* LINUX */
+#endif /* CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT */
         return 0;
     }
 
     OSL_ASSERT(AddrLen == sizeof(struct sockaddr));
 
 
-#if defined(LINUX)
+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT
     if ( pSocket->m_bIsInShutdown == sal_True )
     {
         close(Connection);
 		OSL_TRACE("osl_acceptConnectionOnSocket : close while accept\n");
         return 0;
     }
-#endif /* LINUX */
+#endif /* CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT */
 
 
 	if(ppAddr)
@@ -2253,11 +2253,11 @@
 	pConnectionSockImpl->m_nLastError		= 0;
 	pConnectionSockImpl->m_CloseCallback	= NULL;
 	pConnectionSockImpl->m_CallbackArg		= NULL;
-#if defined(LINUX)
+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT
 	pConnectionSockImpl->m_bIsAccepting		= sal_False;
 
     pSocket->m_bIsAccepting = sal_False;
-#endif /* LINUX */
+#endif /* CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT */
 	return pConnectionSockImpl;
 }
 
diff --git a/main/sal/osl/unx/sockimpl.h b/main/sal/osl/unx/sockimpl.h
index 8c12e1a..2cec813 100644
--- a/main/sal/osl/unx/sockimpl.h
+++ b/main/sal/osl/unx/sockimpl.h
@@ -33,6 +33,12 @@
 #endif
 
 typedef void* (*oslCloseCallback) (void*);
+
+#if defined(LINUX) || defined(FREEBSD) || defined(NETBSD)
+#define CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT 1
+#else
+#define CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT 0
+#endif
 	
 struct oslSocketImpl {
     int					m_Socket;
@@ -40,7 +46,7 @@
 	oslCloseCallback	m_CloseCallback;
 	void*				m_CallbackArg;
 	oslInterlockedCount m_nRefCount;
-#if defined(LINUX)
+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT
     sal_Bool            m_bIsAccepting;
     sal_Bool            m_bIsInShutdown;
 #endif
diff --git a/main/sal/osl/w32/file_error.c b/main/sal/osl/w32/file_error.c
index 322c7f7..44222f5 100644
--- a/main/sal/osl/w32/file_error.c
+++ b/main/sal/osl/w32/file_error.c
@@ -87,8 +87,9 @@
   {  ERROR_NESTING_NOT_ALLOWED,    osl_File_E_AGAIN    },  /* 215 */
   {  ERROR_DIRECTORY,              osl_File_E_NOENT    },  /* 267 */
   {  ERROR_NOT_ENOUGH_QUOTA,       osl_File_E_NOMEM    },  /* 1816 */
+  {  ERROR_CANT_ACCESS_FILE,       osl_File_E_ACCES    },  /* 1920 */
   {  ERROR_UNEXP_NET_ERR,          osl_File_E_NETWORK  },   /* 59 */
-  {  ERROR_FILE_CHECKED_OUT,       osl_File_E_LOCKED   },   /* 220 The file is locked or checked out by another user. */
+  {  ERROR_FILE_CHECKED_OUT,       osl_File_E_ACCES    },   /* 220 The file is locked or checked out by another user. */
   {  ERROR_INVALID_NAME,           osl_File_E_NOENT    }   /*  123 One or more of the names composing the file path has a wrong syntax. */
 };
     
diff --git a/main/solenv/inc/minor.mk b/main/solenv/inc/minor.mk
index 02c12ec..6ce1147 100644
--- a/main/solenv/inc/minor.mk
+++ b/main/solenv/inc/minor.mk
@@ -19,7 +19,7 @@
 #
 # *************************************************************
 RSCVERSION=412
-RSCREVISION=412m2(Build:9781)
-BUILD=9781
-LAST_MINOR=m2
+RSCREVISION=412m3(Build:9782)
+BUILD=9782
+LAST_MINOR=m3
 SOURCEVERSION=AOO412