diff options
author | Caolán McNamara <caolanm@redhat.com> | 2013-08-15 11:39:59 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-08-15 11:41:22 +0100 |
commit | ce791697cbf260b592f7cad095539a414888823f (patch) | |
tree | 902464387dcf988331b6f15edc8bec8a9ea00f5e /sw | |
parent | 79adda35a9963eeac00172f64ca8013f4b3923d1 (diff) |
Resolves: fdo#67554 avoid ooxml import crash
check if the endrange is empty before dereferencing
while I'm at it, don't copy the entire vector and make it a little more
readable
Change-Id: I1f2a0096791ca0ef51aad595f71e1a18aa448c3b
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/docnode/ndtbl.cxx | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx index 8a09ac9f74f9..751b6dce22a7 100644 --- a/sw/source/core/docnode/ndtbl.cxx +++ b/sw/source/core/docnode/ndtbl.cxx @@ -1121,25 +1121,24 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > if (rTableNodes.empty()) return NULL; - std::vector<SwNodeRange> rFirstRange = *rTableNodes.begin(); + const std::vector<SwNodeRange>& rFirstRange = *rTableNodes.begin(); if (rFirstRange.empty()) return NULL; + const std::vector<SwNodeRange>& rLastRange = *rTableNodes.rbegin(); + + if (rLastRange.empty()) + return NULL; + /* Save first node in the selection if it is a content node. */ SwCntntNode * pSttCntntNd = rFirstRange.begin()->aStart.GetNode().GetCntntNode(); - /**debug**/ -#if OSL_DEBUG_LEVEL > 1 - const SwNodeRange& rStartRange = *rTableNodes.begin()->begin(); - const SwNodeRange& rEndRange = *rTableNodes.rbegin()->rbegin(); - (void) rStartRange; - (void) rEndRange; -#endif - /**debug**/ + const SwNodeRange& rStartRange = *rFirstRange.begin(); + const SwNodeRange& rEndRange = *rLastRange.rbegin(); //!!! not necessarily TextNodes !!! - SwPaM aOriginal( rTableNodes.begin()->begin()->aStart, rTableNodes.rbegin()->rbegin()->aEnd ); + SwPaM aOriginal( rStartRange.aStart, rEndRange.aEnd ); const SwPosition *pStt = aOriginal.GetMark(); const SwPosition *pEnd = aOriginal.GetPoint(); |