[Libreoffice-commits] core.git: basctl/source

Laurent Godard lgodard.libre at laposte.net
Tue Aug 18 02:27:41 PDT 2015


 basctl/source/basicide/baside2b.cxx |   11 +++++++++++
 1 file changed, 11 insertions(+)

New commits:
commit ddb43837ca74295b848d3217064a2442b0a12b8c
Author: Laurent Godard <lgodard.libre at laposte.net>
Date:   Tue Aug 18 09:24:26 2015 +0200

    avoid basic ide crash in code autocompletion
    
    due to code completion and user defined types
    
    type MyType
      a as string
      b as string
    end type
    
    dim aa as MyType
    
    typing
    aa.b.
    the last point led to crash
    
    remaining problem
    code autocorrection now shows wrong behaviour as
    aa.b.
    autocorrects (wrongly) to
    aaaa.
    
    Change-Id: I3e05680cd9d82f7dc124c5923f9858e22961896e
    Reviewed-on: https://gerrit.libreoffice.org/17824
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
index d1a29ae..d4961d5 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -860,8 +860,10 @@ void EditorWindow::HandleCodeCompletion()
 
         if( aVect.empty() )//nothing to do
             return;
+
         OUString sBaseName = aVect[0];//variable name
         OUString sVarType = aCodeCompleteCache.GetVarType( sBaseName );
+
         if( !sVarType.isEmpty() && CodeCompleteOptions::IsAutoCorrectOn() )
         {//correct variable name, if autocorrection on
             const OUString& sStr = aCodeCompleteCache.GetCorrectCaseVarName( sBaseName, GetActualSubName(nLine) );
@@ -3002,6 +3004,10 @@ std::vector< OUString > UnoTypeCodeCompletetor::GetXIdlClassFields() const
 
 bool UnoTypeCodeCompletetor::CheckField( const OUString& sFieldName )
 {// modifies xClass!!!
+
+    if ( xClass == NULL )
+        return false;
+
     Reference< reflection::XIdlField> xField = xClass->getField( sFieldName );
     if( xField != NULL )
     {
@@ -3016,6 +3022,11 @@ bool UnoTypeCodeCompletetor::CheckField( const OUString& sFieldName )
 
 bool UnoTypeCodeCompletetor::CheckMethod( const OUString& sMethName )
 {// modifies xClass!!!
+
+
+    if ( xClass == NULL )
+        return false;
+
     Reference< reflection::XIdlMethod> xMethod = xClass->getMethod( sMethName );
     if( xMethod != NULL ) //method OK, check return type
     {


More information about the Libreoffice-commits mailing list