sw/source/core/crsr/pam.cxx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
New commits: commit d9706878b7352b985b3a38d47b30a6e872a266a2 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Fri Sep 16 11:25:17 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Sep 16 12:28:50 2022 +0200 Add more asserts to SwPosition constructor to catch dodgy data where the two node pointers point at different nodes Change-Id: Ib556fac6b753898cc879f2df28d86e12c4c8fbbd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140063 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/source/core/crsr/pam.cxx b/sw/source/core/crsr/pam.cxx index 1b03eed95e8d..5f8f3ec86eb6 100644 --- a/sw/source/core/crsr/pam.cxx +++ b/sw/source/core/crsr/pam.cxx @@ -61,29 +61,36 @@ static sal_Int32 GetSttOrEnd( bool bCondition, const SwContentNode& rNd ) SwPosition::SwPosition( const SwNodeIndex & rNodeIndex, const SwContentIndex & rContent ) : nNode( rNodeIndex ), nContent( rContent ) { + assert((!rNodeIndex.GetNode().GetContentNode() || rNodeIndex.GetNode().GetContentNode() == rContent.GetContentNode()) + && "parameters point to different nodes"); } SwPosition::SwPosition( const SwNode & rNode, const SwContentIndex & rContent ) : nNode( rNode ), nContent( rContent ) { + assert((!rNode.GetContentNode() || rNode.GetContentNode() == rContent.GetContentNode()) + && "parameters point to different nodes"); } SwPosition::SwPosition( const SwNodeIndex & rNodeIndex, const SwContentNode* pContentNode, sal_Int32 nContentOffset ) : nNode( rNodeIndex ), nContent( pContentNode, nContentOffset ) { - assert(!pContentNode || pContentNode == &rNodeIndex.GetNode()); + assert((!pContentNode || pContentNode == &rNodeIndex.GetNode()) && + "parameters point to different nodes"); } SwPosition::SwPosition( const SwNode & rNode, const SwContentNode* pContentNode, sal_Int32 nContentOffset ) : nNode( rNode ), nContent( pContentNode, nContentOffset ) { - assert(!pContentNode || pContentNode == &rNode); + assert((!pContentNode || pContentNode == &rNode) && + "parameters point to different nodes"); } SwPosition::SwPosition( const SwNodeIndex & rNodeIndex, SwNodeOffset nDiff, const SwContentNode* pContentNode, sal_Int32 nContentOffset ) : nNode( rNodeIndex, nDiff ), nContent( pContentNode, nContentOffset ) { - assert(!pContentNode || pContentNode == &rNodeIndex.GetNode()); + assert((!pContentNode || pContentNode == &rNodeIndex.GetNode()) && + "parameters point to different nodes"); } SwPosition::SwPosition( const SwNodeIndex & rNodeIndex, SwNodeOffset nDiff )