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

Andrew Douglas Pitonyak andrew at pitonyak.org
Wed Feb 6 17:56:20 PST 2013


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