From 2f3dcc44cecf34e00bf7bfc48640915ac87e29b5 Mon Sep 17 00:00:00 2001 From: Julien Nabet Date: Sun, 17 Apr 2016 14:23:17 +0200 Subject: tdf#99357: Basic, return if .with pNode null Program received signal SIGSEGV, Segmentation fault. 0x00002aaaaed9741e in SbiExprNode::GetVar (this=0x0) at /home/julien/lo/libreoffice/basic/source/comp/exprnode.cxx:118 118 if( eNodeType == SbxVARVAL ) (gdb) bt 0 0x00002aaaaed9741e in SbiExprNode::GetVar (this=0x0) at /home/julien/lo/libreoffice/basic/source/comp/exprnode.cxx:118 1 0x00002aaaaed9afd6 in SbiParser::With (this=0x50eac70) at /home/julien/lo/libreoffice/basic/source/comp/loops.cxx:266 2 0x00002aaaaed9d1a7 in SbiParser::Parse (this=0x50eac70) at /home/julien/lo/libreoffice/basic/source/comp/parser.cxx:437 Change-Id: If0ecacd007a14e2ba81181da0fe472ea667c4cb7 Reviewed-on: https://gerrit.libreoffice.org/24147 Tested-by: Jenkins Reviewed-by: Julien Nabet --- basic/source/comp/loops.cxx | 2 ++ 1 file changed, 2 insertions(+) (limited to 'basic') diff --git a/basic/source/comp/loops.cxx b/basic/source/comp/loops.cxx index 198f2b25b208..ae973d4677ad 100644 --- a/basic/source/comp/loops.cxx +++ b/basic/source/comp/loops.cxx @@ -263,6 +263,8 @@ void SbiParser::With() SbiExpression aVar( this, SbOPERAND ); SbiExprNode *pNode = aVar.GetExprNode()->GetRealNode(); + if (!pNode) + return; SbiSymDef* pDef = pNode->GetVar(); // Variant, from 27.6.1997, #41090: empty -> must be Object if( pDef->GetType() == SbxVARIANT || pDef->GetType() == SbxEMPTY ) -- cgit