diff --git a/0001-rhbz-867808-Do-not-throw-RuntimeException-by-pointer.patch b/0001-rhbz-867808-Do-not-throw-RuntimeException-by-pointer.patch new file mode 100644 index 0000000..df601c7 --- /dev/null +++ b/0001-rhbz-867808-Do-not-throw-RuntimeException-by-pointer.patch @@ -0,0 +1,221 @@ +From 321b6770f80bf13b0adc5f6abf172684aacf85c7 Mon Sep 17 00:00:00 2001 +From: Stephan Bergmann +Date: Tue, 16 Apr 2013 13:52:02 +0200 +Subject: [PATCH] rhbz#867808 Do not throw RuntimeException by pointer + +(cherry picked from commit e46564a0a6a74da90785a1b910d33e2b5bfdcfd9, plus +63b4633cf7b0da9eba63e752cec72cb10ed9d93e "Related: rhbz#867808 if one person +threw by pointer..." and 336353a87e6003e685aab87ea74a158546e1f297 "Related +rhbz#867808: More apparently bogus 'throw new ...' in C++ code") +Conflicts: + bridges/test/java_uno/nativethreadpool/testnativethreadpoolclient.cxx + bridges/test/java_uno/nativethreadpool/testnativethreadpoolserver.cxx + sdext/source/presenter/PresenterController.cxx + stoc/source/registry_tdprovider/functiondescription.cxx + stoc/source/registry_tdprovider/methoddescription.cxx + toolkit/source/awt/vclxwindow1.cxx + +Change-Id: I22b7d3d642e7ee0488d6b726a331d328065bbee7 +--- + .../nativethreadpool/testnativethreadpoolclient.cxx | 4 ++-- + .../nativethreadpool/testnativethreadpoolserver.cxx | 2 +- + .../source/transliteration/transliteration_Numeric.cxx | 6 +++--- + sdext/source/presenter/PresenterController.cxx | 2 +- + stoc/source/registry_tdprovider/functiondescription.cxx | 4 ++-- + stoc/source/registry_tdprovider/methoddescription.cxx | 2 +- + testtools/source/bridgetest/cli/cli_cpp_bridgetest.cxx | 6 +++--- + toolkit/source/awt/stylesettings.cxx | 2 +- + toolkit/source/awt/vclxwindow1.cxx | 14 ++++++-------- + 9 files changed, 20 insertions(+), 22 deletions(-) + +diff --git a/bridges/test/java_uno/nativethreadpool/testnativethreadpoolclient.cxx b/bridges/test/java_uno/nativethreadpool/testnativethreadpoolclient.cxx +index 4571a17..d5b3b65 100644 +--- a/bridges/test/java_uno/nativethreadpool/testnativethreadpoolclient.cxx ++++ b/bridges/test/java_uno/nativethreadpool/testnativethreadpoolclient.cxx +@@ -85,7 +85,7 @@ sal_Int32 Client::run(css::uno::Sequence< rtl::OUString > const &) + css::uno::Reference< css::lang::XMultiComponentFactory > factory( + context->getServiceManager()); + if (!factory.is()) { +- throw new css::uno::RuntimeException( ++ throw css::uno::RuntimeException( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "no component context service manager" )), + static_cast< cppu::OWeakObject * >(this)); + } +@@ -105,7 +105,7 @@ sal_Int32 Client::run(css::uno::Sequence< rtl::OUString > const &) + } + relay->start(this); + if (!data.setData(reinterpret_cast< void * >(12345))) { +- throw new css::uno::RuntimeException( ++ throw css::uno::RuntimeException( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "osl::ThreadData::setData failed" )), + static_cast< cppu::OWeakObject * >(this)); + } +diff --git a/bridges/test/java_uno/nativethreadpool/testnativethreadpoolserver.cxx b/bridges/test/java_uno/nativethreadpool/testnativethreadpoolserver.cxx +index 0e6898b..c80355e 100644 +--- a/bridges/test/java_uno/nativethreadpool/testnativethreadpoolserver.cxx ++++ b/bridges/test/java_uno/nativethreadpool/testnativethreadpoolserver.cxx +@@ -74,7 +74,7 @@ sal_Int32 Server::get() throw (css::uno::RuntimeException) { + css::uno::Reference< css::lang::XMultiComponentFactory > factory( + context->getServiceManager()); + if (!factory.is()) { +- throw new css::uno::RuntimeException( ++ throw css::uno::RuntimeException( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "no component context service manager" )), + static_cast< cppu::OWeakObject * >(this)); + } +diff --git a/i18npool/source/transliteration/transliteration_Numeric.cxx b/i18npool/source/transliteration/transliteration_Numeric.cxx +index 3156a4c..de7eab5 100644 +--- a/i18npool/source/transliteration/transliteration_Numeric.cxx ++++ b/i18npool/source/transliteration/transliteration_Numeric.cxx +@@ -47,21 +47,21 @@ OUString SAL_CALL + transliteration_Numeric::folding( const OUString& /*inStr*/, sal_Int32 /*startPos*/, sal_Int32 /*nCount*/, Sequence< sal_Int32 >& /*offset*/ ) + throw(RuntimeException) + { +- throw (new RuntimeException()); ++ throw RuntimeException(); + } + + sal_Bool SAL_CALL + transliteration_Numeric::equals( const OUString& /*str1*/, sal_Int32 /*pos1*/, sal_Int32 /*nCount1*/, sal_Int32& /*nMatch1*/, const OUString& /*str2*/, sal_Int32 /*pos2*/, sal_Int32 /*nCount2*/, sal_Int32& /*nMatch2*/ ) + throw(RuntimeException) + { +- throw (new RuntimeException()); ++ throw RuntimeException(); + } + + Sequence< OUString > SAL_CALL + transliteration_Numeric::transliterateRange( const OUString& /*str1*/, const OUString& /*str2*/ ) + throw(RuntimeException) + { +- throw (new RuntimeException()); ++ throw RuntimeException(); + } + + +diff --git a/sdext/source/presenter/PresenterController.cxx b/sdext/source/presenter/PresenterController.cxx +index 2b1c3e4..0321b10 100644 +--- a/sdext/source/presenter/PresenterController.cxx ++++ b/sdext/source/presenter/PresenterController.cxx +@@ -127,7 +127,7 @@ PresenterController::PresenterController ( + OSL_ASSERT(mxController.is()); + + if ( ! mxSlideShowController.is()) +- throw new lang::IllegalArgumentException( ++ throw lang::IllegalArgumentException( + A2S("missing slide show controller"), + static_cast(this), + 2); +diff --git a/stoc/source/registry_tdprovider/functiondescription.cxx b/stoc/source/registry_tdprovider/functiondescription.cxx +index 2056b8e..931efd4 100644 +--- a/stoc/source/registry_tdprovider/functiondescription.cxx ++++ b/stoc/source/registry_tdprovider/functiondescription.cxx +@@ -82,7 +82,7 @@ FunctionDescription::getExceptions() const { + try { + any = m_manager->getByHierarchicalName(name); + } catch (const css::container::NoSuchElementException & e) { +- throw new css::uno::RuntimeException( ++ throw css::uno::RuntimeException( + (rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.container.NoSuchElementException: ")) +@@ -92,7 +92,7 @@ FunctionDescription::getExceptions() const { + if (!(any >>= exceptions[i]) + || exceptions[i]->getTypeClass() != css::uno::TypeClass_EXCEPTION) + { +- throw new css::uno::RuntimeException( ++ throw css::uno::RuntimeException( + (rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("not an exception type: ")) + + name), +diff --git a/stoc/source/registry_tdprovider/methoddescription.cxx b/stoc/source/registry_tdprovider/methoddescription.cxx +index bf5cb56..58525c0 100644 +--- a/stoc/source/registry_tdprovider/methoddescription.cxx ++++ b/stoc/source/registry_tdprovider/methoddescription.cxx +@@ -101,7 +101,7 @@ css::uno::Reference< css::reflection::XTypeDescription > Parameter::getType() + m_manager->getByHierarchicalName(m_typeName), + css::uno::UNO_QUERY_THROW); + } catch (const css::container::NoSuchElementException & e) { +- throw new css::uno::RuntimeException( ++ throw css::uno::RuntimeException( + (rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.container.NoSuchElementException: ")) +diff --git a/testtools/source/bridgetest/cli/cli_cpp_bridgetest.cxx b/testtools/source/bridgetest/cli/cli_cpp_bridgetest.cxx +index b1850d7..4b93eaf 100644 +--- a/testtools/source/bridgetest/cli/cli_cpp_bridgetest.cxx ++++ b/testtools/source/bridgetest/cli/cli_cpp_bridgetest.cxx +@@ -808,7 +808,7 @@ static bool raiseException(XBridgeTest* xLBT ) + bRet = performQueryForUnknownType( xLBT ) && bRet; + if (! bRet) + { +- throw new unoidl::com::sun::star::uno::RuntimeException( ++ throw unoidl::com::sun::star::uno::RuntimeException( + new String("error: test failed!"), 0); + } + } +@@ -828,7 +828,7 @@ static bool raiseException(XBridgeTest* xLBT ) + { + if (args->Length < 1) + { +- throw new RuntimeException( ++ throw RuntimeException( + "missing argument for bridgetest!", this ); + } + Object* test_obj = +@@ -855,7 +855,7 @@ static bool raiseException(XBridgeTest* xLBT ) + s->Append(exc->GetType()->Name); + s->Append(S"\n Message: "); + s->Append(exc->Message); +- throw new unoidl::com::sun::star::uno::RuntimeException( ++ throw unoidl::com::sun::star::uno::RuntimeException( + s->ToString(), 0); + } + } +diff --git a/toolkit/source/awt/stylesettings.cxx b/toolkit/source/awt/stylesettings.cxx +index 0175382..97b8a9a 100644 +--- a/toolkit/source/awt/stylesettings.cxx ++++ b/toolkit/source/awt/stylesettings.cxx +@@ -126,7 +126,7 @@ namespace toolkit + { + Window* pWindow = i_rOwningWindow.GetWindow(); + if ( !pWindow ) +- throw new RuntimeException(); ++ throw RuntimeException(); + pWindow->AddEventListener( LINK( m_pData.get(), WindowStyleSettings_Data, OnWindowEvent ) ); + } + +diff --git a/toolkit/source/awt/vclxwindow1.cxx b/toolkit/source/awt/vclxwindow1.cxx +index a3dba99..e1250c5 100644 +--- a/toolkit/source/awt/vclxwindow1.cxx ++++ b/toolkit/source/awt/vclxwindow1.cxx +@@ -55,10 +55,9 @@ void VCLXWindow::SetSystemParent_Impl( const com::sun::star::uno::Any& rHandle ) + Window *pWindow = GetWindow(); + if ( pWindow->GetType() != WINDOW_WORKWINDOW ) + { +- ::com::sun::star::uno::Exception *pException = +- new ::com::sun::star::uno::RuntimeException; +- pException->Message = ::rtl::OUString("not a work window"); +- throw pException; ++ com::sun::star::uno::Exception aException; ++ aException.Message = ::rtl::OUString("not a work window"); ++ throw aException; + } + + // use sal_Int64 here to accomodate all int types +@@ -86,10 +85,9 @@ void VCLXWindow::SetSystemParent_Impl( const com::sun::star::uno::Any& rHandle ) + } + if( bThrow ) + { +- ::com::sun::star::uno::Exception *pException = +- new ::com::sun::star::uno::RuntimeException; +- pException->Message = ::rtl::OUString("incorrect window handle type"); +- throw pException; ++ com::sun::star::uno::Exception aException; ++ aException.Message = ::rtl::OUString("incorrect window handle type"); ++ throw aException; + } + // create system parent data + SystemParentData aSysParentData; +-- +1.8.1.4 + diff --git a/libreoffice.spec b/libreoffice.spec index 5365cb8..251bb63 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -44,7 +44,7 @@ Summary: Free Software Productivity Suite Name: libreoffice Epoch: 1 Version: %{libo_version}.2 -Release: 3%{?libo_prerelease}%{?dist} +Release: 4%{?libo_prerelease}%{?dist} License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and Artistic and MPLv2.0 Group: Applications/Productivity URL: http://www.documentfoundation.org/develop @@ -259,6 +259,7 @@ Patch37: 0001-fdo-62617-display-groups-on-multiple-layers-correctl.patch Patch38: 0001-Resolves-rhbz-949238-div-by-zero-on-pagedown-in-0-wi.patch Patch39: 0001-valgrind-uninitialized-value.patch Patch40: 0001-Resolves-fdo-47209-and-rhbz-927223-syntax-highlighte.patch +Patch41: 0001-rhbz-867808-Do-not-throw-RuntimeException-by-pointer.patch %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %define instdir %{_libdir} @@ -1011,6 +1012,7 @@ mv -f redhat.soc extras/source/palettes/standard.soc %patch38 -p1 -b .rhbz-949238-div-by-zero-on-pagedown-in-0-wi.patch %patch39 -p1 -b .valgrind-uninitialized-value.patch %patch40 -p1 -b .fdo-47209-and-rhbz-927223-syntax-highlighte.patch +%patch41 -p1 -b .rhbz-867808-Do-not-throw-RuntimeException-by-pointer.patch # TODO: check this # these are horribly incomplete--empty translations and copied english @@ -2280,7 +2282,10 @@ update-desktop-database %{_datadir}/applications &> /dev/null || : %endif %changelog -* Thu Apr 16 2013 Caolán McNamara - 1:3.6.6.2-3 +* Tue Apr 16 2013 Stephan Bergmann - 1:3.6.6.2-4-UNBUILT +- Resolves: rhbz#867808 do not throw UNO exceptions by pointer in C++ + +* Tue Apr 16 2013 Caolán McNamara - 1:3.6.6.2-3 - Related: rhbz#924515 uninitialized variable in editengine - Resolves: rhbz#927223 syntax highlighting crash