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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.