sc/source/filter/inc/orcusinterface.hxx | 31 ++++++++++++++++--------------- sc/source/filter/orcus/interface.cxx | 4 ++-- 2 files changed, 18 insertions(+), 17 deletions(-)
New commits: commit a0fd86f138157693b4b43c5af24009bb777cf422 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Tue Apr 9 16:14:40 2013 -0400 Try not to crash during import of xlsx and ods documents. Also, let's not leak memory by returning a new'ed instance from get_styles(). Orcus never manages the life cycle of objects returned from client code. Change-Id: Id92eb10dbe88c2a55b5d04e408a01fa9c25fa9a1 diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx index 4bc9b40..0de1fcc 100644 --- a/sc/source/filter/inc/orcusinterface.hxx +++ b/sc/source/filter/inc/orcusinterface.hxx @@ -42,21 +42,6 @@ public: const OUString& getByIndex(size_t index) const; }; -class ScOrcusFactory : public orcus::spreadsheet::iface::import_factory -{ - ScDocument& mrDoc; - boost::ptr_vector<ScOrcusSheet> maSheets; - ScOrcusSharedStrings maSharedStrings; - -public: - ScOrcusFactory(ScDocument& rDoc); - - virtual orcus::spreadsheet::iface::import_sheet* append_sheet(const char *sheet_name, size_t sheet_name_length); - virtual orcus::spreadsheet::iface::import_sheet* get_sheet(const char *sheet_name, size_t sheet_name_length); - virtual orcus::spreadsheet::iface::import_shared_strings* get_shared_strings(); - virtual orcus::spreadsheet::iface::import_styles* get_styles(); -}; - class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet { ScDocument& mrDoc; @@ -165,5 +150,21 @@ public: virtual size_t commit_cell_style(); }; +class ScOrcusFactory : public orcus::spreadsheet::iface::import_factory +{ + ScDocument& mrDoc; + boost::ptr_vector<ScOrcusSheet> maSheets; + ScOrcusSharedStrings maSharedStrings; + ScOrcusStyles maStyles; + +public: + ScOrcusFactory(ScDocument& rDoc); + + virtual orcus::spreadsheet::iface::import_sheet* append_sheet(const char *sheet_name, size_t sheet_name_length); + virtual orcus::spreadsheet::iface::import_sheet* get_sheet(const char *sheet_name, size_t sheet_name_length); + virtual orcus::spreadsheet::iface::import_shared_strings* get_shared_strings(); + virtual orcus::spreadsheet::iface::import_styles* get_styles(); +}; + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx index 25d9b5d..5e48208 100644 --- a/sc/source/filter/orcus/interface.cxx +++ b/sc/source/filter/orcus/interface.cxx @@ -73,7 +73,7 @@ orcus::spreadsheet::iface::import_shared_strings* ScOrcusFactory::get_shared_str orcus::spreadsheet::iface::import_styles* ScOrcusFactory::get_styles() { // We don't support it yet. - return new ScOrcusStyles; + return &maStyles; } ScOrcusSheet::ScOrcusSheet(ScDocument& rDoc, SCTAB nTab, ScOrcusSharedStrings& rSharedStrings) : @@ -239,7 +239,7 @@ const OUString& ScOrcusSharedStrings::getByIndex(size_t nIndex) const if(nIndex < maSharedStrings.size()) return maSharedStrings[nIndex]; - throw std::exception(); + return EMPTY_OUSTRING; } void ScOrcusSharedStrings::set_segment_bold(bool /*b*/) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits