diff options
author | Laurent Godard <lgodard.libre@laposte.net> | 2015-08-18 09:24:26 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-08-18 09:27:18 +0000 |
commit | ddb43837ca74295b848d3217064a2442b0a12b8c (patch) | |
tree | 3192ec4b9e94d13aaf5fd85bbe836681606e7f02 /basctl | |
parent | 222f10e773ba51a19880be1b798990260c198147 (diff) |
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@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'basctl')
-rw-r--r-- | basctl/source/basicide/baside2b.cxx | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index d1a29ae6f003..d4961d559481 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 { |