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 )

Reply via email to