Kaydet (Commit) ddb43837 authored tarafından Laurent Godard's avatar Laurent Godard Kaydeden (comit) Caolán McNamara

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/17824Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 222f10e7
......@@ -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
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment