[Libreoffice-commits] core.git: Branch 'libreoffice-7-1' - sc/qa scripting/source

Andreas Heinisch (via logerrit) logerrit at kemper.freedesktop.org
Mon Aug 9 17:42:20 UTC 2021


 sc/qa/extras/macros-test.cxx             |   30 ++++++++++++++++++++++++++++++
 sc/qa/extras/testdocuments/tdf143582.ods |binary
 scripting/source/basprov/basscript.cxx   |    2 ++
 3 files changed, 32 insertions(+)

New commits:
commit c2697c468c1441df61b2d590a7cb259d21b3ba60
Author:     Andreas Heinisch <andreas.heinisch at yahoo.de>
AuthorDate: Mon Aug 2 19:48:35 2021 +0200
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Mon Aug 9 19:41:46 2021 +0200

    tdf#143582 - Clear return value of the method before calling it
    
    Otherwise the function keeps a copy of its return value, which may be
    used in an upcoming call.
    
    Change-Id: I4977c39e1ce48cfd5ab067a4df4783f10505a9ae
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119905
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <andreas.heinisch at yahoo.de>
    Signed-off-by: Xisco Fauli <xiscofauli at libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120197
    Signed-off-by: Xisco Fauli <xiscofauli at libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120211

diff --git a/sc/qa/extras/macros-test.cxx b/sc/qa/extras/macros-test.cxx
index 9322a3eab7cd..557fdf5dd3d1 100644
--- a/sc/qa/extras/macros-test.cxx
+++ b/sc/qa/extras/macros-test.cxx
@@ -55,6 +55,7 @@ public:
     void testTdf43003();
     void testTdf138646();
     void testTdf90278();
+    void testTdf143582();
 
     CPPUNIT_TEST_SUITE(ScMacrosTest);
     CPPUNIT_TEST(testStarBasic);
@@ -75,6 +76,7 @@ public:
     CPPUNIT_TEST(testTdf43003);
     CPPUNIT_TEST(testTdf138646);
     CPPUNIT_TEST(testTdf90278);
+    CPPUNIT_TEST(testTdf143582);
 
     CPPUNIT_TEST_SUITE_END();
 };
@@ -869,6 +871,34 @@ void ScMacrosTest::testTdf43003()
     xCloseable->close(true);
 }
 
+void ScMacrosTest::testTdf143582()
+{
+    OUString aFileName;
+    createFileURL(u"tdf143582.ods", aFileName);
+    auto xComponent = loadFromDesktop(aFileName, "com.sun.star.sheet.SpreadsheetDocument");
+
+    css::uno::Any aRet;
+    css::uno::Sequence<css::uno::Any> aParams;
+    css::uno::Sequence<css::uno::Any> aOutParam;
+    css::uno::Sequence<sal_Int16> aOutParamIndex;
+
+    SfxObjectShell::CallXScript(
+        xComponent,
+        "vnd.sun.Star.script:Standard.Module1.TestScriptInvoke?language=Basic&location=document",
+        aParams, aRet, aOutParamIndex, aOutParam);
+
+    OUString aReturnValue;
+    aRet >>= aReturnValue;
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: Test
+    // - Actual  : TeTest
+    CPPUNIT_ASSERT_EQUAL(OUString("Test"), aReturnValue);
+
+    css::uno::Reference<css::util::XCloseable> xCloseable(xComponent, css::uno::UNO_QUERY_THROW);
+    xCloseable->close(true);
+}
+
 void ScMacrosTest::testTdf138646()
 {
     OUString aFileName;
diff --git a/sc/qa/extras/testdocuments/tdf143582.ods b/sc/qa/extras/testdocuments/tdf143582.ods
new file mode 100644
index 000000000000..05f4f07cea2c
Binary files /dev/null and b/sc/qa/extras/testdocuments/tdf143582.ods differ
diff --git a/scripting/source/basprov/basscript.cxx b/scripting/source/basprov/basscript.cxx
index 216e2fa99bd6..08da36cda5b0 100644
--- a/scripting/source/basprov/basscript.cxx
+++ b/scripting/source/basprov/basscript.cxx
@@ -222,6 +222,8 @@ namespace basprov
             if ( m_documentBasicManager && m_xDocumentScriptContext.is() )
                 aOldThisComponent = m_documentBasicManager->SetGlobalUNOConstant( "ThisComponent", makeAny( m_xDocumentScriptContext ) );
 
+            // tdf#143582 - clear return value of the method before calling it
+            m_xMethod->Clear();
             if ( m_caller.hasElements() && m_caller[ 0 ].hasValue()  )
             {
                 SbxVariableRef xCallerVar = new SbxVariable( SbxVARIANT );


More information about the Libreoffice-commits mailing list