Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index



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.