From 633736f40f7e6a58d691875b2e52d9a5e8140113 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Fri, 5 Jul 2013 00:07:43 +0200 Subject: fdo#66420: fix user dictionaries on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 28300209604ee1bb8e5050322b29e95a07f679d8 added yet another silly temp file wrapper class, and introduced 2 bugs: the file descriptor is not closed before renaming it which fails with ERROR_SHARING_VIOLATION on Win32, and (as a consequence of that) another attempt to save the dictionary during shutdown fails because SimpleFileAccess cannot be created and this is not checked. Change-Id: I7bd3f5d349ed550440a93fe71e3791c9919de3af (cherry picked from commit d68de5195605bd9236851e0714dd9b03b0f5f3be) Reviewed-on: https://gerrit.libreoffice.org/4729 Reviewed-by: Fridrich Strba Tested-by: Fridrich Strba (cherry picked from commit 4d1774b3631e4ac93b544c42bd33cb4058a16392) Reviewed-on: https://gerrit.libreoffice.org/4738 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara Reviewed-by: Michael Meeks Tested-by: Michael Meeks --- linguistic/source/dicimp.cxx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/linguistic/source/dicimp.cxx b/linguistic/source/dicimp.cxx index 083f4c5cc6bb..5af73a82de33 100644 --- a/linguistic/source/dicimp.cxx +++ b/linguistic/source/dicimp.cxx @@ -393,7 +393,10 @@ struct TmpDictionary { try { - mxAccess->kill(maTmpURL); + if (mxAccess.is()) + { + mxAccess->kill(maTmpURL); + } } catch (const uno::Exception &) { } } @@ -492,6 +495,8 @@ sal_uLong DictionaryNeo::saveEntries(const OUString &rURL) break; } + pStream.reset(); // fdo#66420 close streams so Win32 can move the file + xStream.clear(); nErr = aTmpDictionary.renameTmpToURL(); //If we are migrating from an older version, then on first successful -- cgit v1.2.3