[PATCH libreoffice-4-0] fix for fdo#60065

Andrew Douglas Pitonyak andrew at pitonyak.org
Wed Feb 6 18:02:47 PST 2013


Reported here:

https://bugs.freedesktop.org/show_bug.cgi?id=60371

On 02/06/2013 08:56 PM, Andrew Douglas Pitonyak wrote:
>
> Does the patch fix this regression (that fails with 4 RC2)?
>
> Sub badStruct
>   Dim x As New com.sun.star.beans.PropertyValue
>   Dim y As New com.sun.star.beans.PropertyValue
>   x.Name = "hello"
>   x.Value = y
> End Sub
>
> Unable to test with RC3 yet
>
>
>
> On 02/05/2013 10:40 AM, Noel Power (via Code Review) wrote:
>> Hi,
>>
>> I have submitted a patch for review:
>>
>>      https://gerrit.libreoffice.org/2003
>>
>> To pull it, you can do:
>>
>>      git pull ssh://gerrit.libreoffice.org:29418/core 
>> refs/changes/03/2003/1
>>
>> fix for fdo#60065
>>
>> squash errors trying to gain object for rhs ( where no object yet 
>> exists (
>>
>> Change-Id: I81548d1c6a32f0445dc18e31c84c3df85163ed45
>> ---
>> A basic/qa/basic_coverage/uno_struct_assign.vb
>> M basic/source/runtime/step0.cxx
>> 2 files changed, 25 insertions(+), 0 deletions(-)
>>
>>
>>
>> diff --git a/basic/qa/basic_coverage/uno_struct_assign.vb 
>> b/basic/qa/basic_coverage/uno_struct_assign.vb
>> new file mode 100644
>> index 0000000..23812de
>> --- /dev/null
>> +++ b/basic/qa/basic_coverage/uno_struct_assign.vb
>> @@ -0,0 +1,15 @@
>> +'
>> +' This file is part of the LibreOffice project.
>> +'
>> +' This Source Code Form is subject to the terms of the Mozilla Public
>> +' License, v. 2.0. If a copy of the MPL was not distributed with this
>> +' file, You can obtain one at http://mozilla.org/MPL/2.0/.
>> +'
>> +
>> +
>> +Function doUnitTest as Integer
>> +  Dim oNamedValue as new com.sun.star.beans.NamedValue
>> +  Dim oCellAddress as new com.sun.star.table.CellAddress
>> +  oNamedValue.Value = oCellAddress ' fdo#60065 - this would throw an 
>> error
>> +  doUnitTest = 1
>> +End Function
>> diff --git a/basic/source/runtime/step0.cxx 
>> b/basic/source/runtime/step0.cxx
>> index 5e41425..2388722 100644
>> --- a/basic/source/runtime/step0.cxx
>> +++ b/basic/source/runtime/step0.cxx
>> @@ -388,7 +388,17 @@
>>       if (  aAny.getValueType().getTypeClass() == TypeClass_STRUCT )
>>       {
>>           refVar->SetType( SbxOBJECT );
>> +        SbxError eOldErr = refVar->GetError();
>> +        // There are some circumstances when calling GetObject
>> +        // will trigger an error, we need to squash those here.
>> +        // Alternatively it is possible that the same scenario
>> +        // could overwrite and existing error. Lets prevent that
>>           SbxObjectRef xVarObj = (SbxObject*)refVar->GetObject();
>> +        if ( eOldErr != SbxERR_OK )
>> +            refVar->SetError( eOldErr );
>> +        else
>> +            refVar->ResetError();
>> +
>>           SbUnoStructRefObject* pUnoStructObj = 
>> PTR_CAST(SbUnoStructRefObject,(SbxObject*)xVarObj);
>>             if ( ( !pUnoVal && !pUnoStructVal ) )
>>
>

-- 
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
Info:  http://www.pitonyak.org/oo.php



More information about the LibreOffice mailing list