summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTushar Bende <tushar.bende@synerzip.com>2013-12-09 19:13:36 +0530
committerMiklos Vajna <vmiklos@collabora.co.uk>2013-12-16 13:08:26 +0100
commitbee397a1e35fbc2717c56a8bd4a631ccfc185b6b (patch)
tree70b699ed0c49002c79950734f6fa1737da6f3a6d
parent8c5b4bb03cdf3fd5e794cfd8de68b00eb5de48fb (diff)
fdo#68211: Fix for "General input/output error" while opening file
Description: Docx containing floating table with formula was giving "General input/output error" while opening in LibreOffice. Reason being within xLoader->filter() it was calling EmbeddedObjectContainer::RemoveEmbeddedObject() with bClose value as sal_True(default value in function declaration) and hence it was removing embedded object from container and also it was closing it.Fix includes passing this bClose value as sal_false (which means remove object from container but don't close it.) verified code changes for various floating table docx and normal docx containing tables and formulas. Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport.cxx Reviewed on: https://gerrit.libreoffice.org/7009 Change-Id: I9c2d3f8c4099f9f753b2a1b027f9072cd4effeb5
-rw-r--r--sw/qa/extras/ooxmlexport/data/floatingtbl_with_formula.docxbin0 -> 17046 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport.cxx9
-rw-r--r--sw/source/core/ole/ndole.cxx5
3 files changed, 12 insertions, 2 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/floatingtbl_with_formula.docx b/sw/qa/extras/ooxmlexport/data/floatingtbl_with_formula.docx
new file mode 100644
index 000000000000..ecabbd6b2a9f
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/floatingtbl_with_formula.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 7428200b14f7..aede32896156 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -2136,6 +2136,15 @@ DECLARE_OOXMLEXPORT_TEST(testCrashWhileSave, "testCrashWhileSave.docx")
CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:ftr/w:tbl/w:tr/w:tc[1]/w:p[1]/w:pPr/w:pStyle", "val").match("Normal"));
}
+DECLARE_OOXMLEXPORT_TEST(testFileOpenInputOutputError,"floatingtbl_with_formula.docx")
+{
+ // Docx containing Floating table with formula was giving "General input/output error" while opening in LibreOffice
+ xmlDocPtr pXmlDoc = parseExport("word/document.xml");
+ if (!pXmlDoc)
+ return;
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:pPr/w:pStyle", "val", "Normal");
+}
+
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/core/ole/ndole.cxx b/sw/source/core/ole/ndole.cxx
index e3793afb9845..64739126a110 100644
--- a/sw/source/core/ole/ndole.cxx
+++ b/sw/source/core/ole/ndole.cxx
@@ -715,10 +715,11 @@ SwOLEObj::~SwOLEObj()
// successful closing of the object will automatically clear the reference then
xOLERef.Lock(sal_False);
- // Always remove object from conteiner it is connected to
+ // Always remove object from container it is connected to
try
{
- pCnt->RemoveEmbeddedObject( aName );
+ // remove object from container but don't close it
+ pCnt->RemoveEmbeddedObject( aName, sal_False);
}
catch ( uno::Exception& )
{