diff options
author | Noel Power <noel.power@suse.com> | 2013-07-26 11:25:51 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2013-07-26 16:53:45 +0000 |
commit | cb626d01772985bd0eed0f5963475d0e801379c8 (patch) | |
tree | 5bfea30349b9eb627a03ef6eacb18e017a48f2fb /sc | |
parent | 70f9d122ecfc24aed528881c9ec734f9d3bcbfb3 (diff) |
fix for fdo#62729 reference pos can point to non existing table
there is an existing function ( called at least from uno names api also )
that updates the tab pos, calling that seems to fix this problem
(cherry picked from commit b5fffdb8d0438a2fe933a5742d41fe50a14b71f3)
with squash of
unit test for fdo#62729
(cherry picked from commit 7b3d8e0a7dcf6ae05e1de5c33ed382822cf52cce)
Change-Id: I6f6f31895eda9c338eeabd3f3285bf2c9eb23b7e
b9be75459aa49b8bab968dedae9e0760ccef9a26
Reviewed-on: https://gerrit.libreoffice.org/5124
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/unit/data/ods/fdo62729.ods | bin | 0 -> 6772 bytes | |||
-rw-r--r-- | sc/qa/unit/subsequent_export-test.cxx | 30 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlexprt.cxx | 1 |
3 files changed, 31 insertions, 0 deletions
diff --git a/sc/qa/unit/data/ods/fdo62729.ods b/sc/qa/unit/data/ods/fdo62729.ods Binary files differnew file mode 100644 index 000000000000..00b50798f6bc --- /dev/null +++ b/sc/qa/unit/data/ods/fdo62729.ods diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 5dbadba82182..ed23eeedb566 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -52,6 +52,7 @@ public: void testDataBarExportODS(); void testDataBarExportXLSX(); void testMiscRowHeightExport(); + void testNamedRangeBugfdo62729(); CPPUNIT_TEST_SUITE(ScExportTest); CPPUNIT_TEST(test); @@ -63,6 +64,7 @@ public: CPPUNIT_TEST(testColorScaleExportODS); CPPUNIT_TEST(testColorScaleExportXLSX); CPPUNIT_TEST(testMiscRowHeightExport); + CPPUNIT_TEST(testNamedRangeBugfdo62729); CPPUNIT_TEST_SUITE_END(); private: @@ -292,6 +294,34 @@ void ScExportTest::testMiscRowHeightExport() miscRowHeightsTest( aTestValues, SAL_N_ELEMENTS(aTestValues) ); } + +void ScExportTest::testNamedRangeBugfdo62729() +{ + ScDocShellRef xShell = loadDoc("fdo62729.", ODS); + CPPUNIT_ASSERT(xShell.Is()); + ScDocument* pDoc = xShell->GetDocument(); + CPPUNIT_ASSERT(pDoc); + + ScRangeName* pNames = pDoc->GetRangeName(); + //should be just a single named range + CPPUNIT_ASSERT(pNames->size() == 1 ); + pDoc->DeleteTab(0); + //should be still a single named range + CPPUNIT_ASSERT(pNames->size() == 1 ); + ScDocShellRef xDocSh = saveAndReload(xShell, ODS); + xShell->DoClose(); + + CPPUNIT_ASSERT(xDocSh.Is()); + pDoc = xDocSh->GetDocument(); + CPPUNIT_ASSERT(pDoc); + + pNames = pDoc->GetRangeName(); + //after reload should still have a named range + CPPUNIT_ASSERT(pNames->size() == 1 ); + + xDocSh->DoClose(); +} + ScExportTest::ScExportTest() : ScBootstrapFixture("/sc/qa/unit/data") { diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index 2a543cdfddd8..73b3aec34b33 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -3738,6 +3738,7 @@ void ScXMLExport::WriteNamedRange(ScRangeName* pRangeName) AddAttribute(sAttrName, it->second->GetName()); OUString sBaseCellAddress; + it->second->ValidateTabRefs(); ScRangeStringConverter::GetStringFromAddress( sBaseCellAddress, it->second->GetPos(), pDoc, FormulaGrammar::CONV_OOO, ' ', false, SCA_ABS_3D); AddAttribute(XML_NAMESPACE_TABLE, XML_BASE_CELL_ADDRESS, sBaseCellAddress); |