bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx | 58 ++++++++++++++-- configure.ac | 2 cui/source/tabpages/tparea.cxx | 7 - ridljar/com/sun/star/lib/util/NativeLibraryLoader.java | 9 -- sc/inc/kahan.hxx | 11 +++ svx/source/svdraw/svdpage.cxx | 4 - sw/source/core/frmedt/feshview.cxx | 7 + 7 files changed, 74 insertions(+), 24 deletions(-)
New commits: commit 979bacbb37b1ea1b42f739ea0d4a0ed22a3088f4 Author: Andras Timar <andras.ti...@collabora.com> AuthorDate: Mon Sep 18 10:16:20 2023 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Mon Sep 18 10:16:20 2023 +0200 Bump version to 23.05.4.2 Change-Id: I5390995e79b184399256f4bbd167dfcd77339e3d diff --git a/configure.ac b/configure.ac index 500533a83f07..b0dd7b189697 100644 --- a/configure.ac +++ b/configure.ac @@ -9,7 +9,7 @@ dnl in order to create a configure script. # several non-alphanumeric characters, those are split off and used only for the # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea. -AC_INIT([Collabora Office],[23.05.4.1],[],[],[https://collaboraoffice.com/]) +AC_INIT([Collabora Office],[23.05.4.2],[],[],[https://collaboraoffice.com/]) dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard commit c8cef77b6c51c94387b321ac48321e6cc5c0a106 Author: Julien Nabet <serval2...@yahoo.fr> AuthorDate: Thu Sep 14 22:50:37 2023 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Mon Sep 18 10:13:51 2023 +0200 tdf#157174: fix crash when clicking "Print Preview" Don't call Reformat method when treating a virtual SdrObject bt: 4 0x00007fd7ff446eb4 in SdrObject::GetBroadcaster() const (this=0x4) at /home/julien/lo/libreoffice/svx/source/svdraw/svdobj.cxx:698 5 0x00007fd7ff48eaee in SdrEdgeObj::Reformat() (this=0x564e82ef22d0) at /home/julien/lo/libreoffice/svx/source/svdraw/svdoedge.cxx:1666 6 0x00007fd7ff551bd9 in SdrObjList::ImplReformatAllEdgeObjects(SdrObjList const&) (this=0x564e82a371e0, rObjList=...) at /home/julien/lo/libreoffice/svx/source/svdraw/svdpage.cxx:760 7 0x00007fd7ff551b38 in SdrObjList::ReformatAllEdgeObjects() (this=0x564e82a371e0) at /home/julien/lo/libreoffice/svx/source/svdraw/svdpage.cxx:744 8 0x00007fd7ff3d8d1c in SdrModel::ImpReformatAllEdgeObjects() (this=0x564e7f79dc50) at /home/julien/lo/libreoffice/svx/source/svdraw/svdmodel.cxx:752 9 0x00007fd7ff3dda3b in SdrModel::setLock(bool) (this=0x564e7f79dc50, bLock=false) at /home/julien/lo/libreoffice/svx/source/svdraw/svdmodel.cxx:1618 10 0x00007fd7c58a9a76 in SwView::~SwView() (this=0x564e82e7bb00) at /home/julien/lo/libreoffice/sw/source/uibase/uiview/view.cxx:1163 11 0x00007fd7c58a9f99 in SwView::~SwView() (this=0x564e82e7bb00) at /home/julien/lo/libreoffice/sw/source/uibase/uiview/view.cxx:1122 12 0x00007fd801835308 in SfxViewFrame::SwitchToViewShell_Impl(unsigned short, bool) (this=0x564e82b17680, nViewIdOrNo=1, bIsIndex=true) at /home/julien/lo/libreoffice/sfx2/source/view/viewfrm.cxx:2528 See complete bt here: https://bugs.documentfoundation.org/attachment.cgi?id=189470 Change-Id: I4de5127686c01a40c1666f6089efa4fe7a114cd0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156934 (cherry picked from commit 17cd1dacf6a4b587b524edc7384ff26990208132) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156951 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx index bc04316941c4..8378dcfed820 100644 --- a/svx/source/svdraw/svdpage.cxx +++ b/svx/source/svdraw/svdpage.cxx @@ -795,7 +795,9 @@ void SdrObjList::ImplReformatAllEdgeObjects(const SdrObjList& rObjList) const bool bIsGroup(nullptr != pChildren); if(!bIsGroup) { - if (pSdrObject->GetObjIdentifier() == SdrObjKind::Edge) + // Check IsVirtualObj because sometimes we get SwDrawVirtObj here + if (pSdrObject->GetObjIdentifier() == SdrObjKind::Edge + && !pSdrObject->IsVirtualObj()) { SdrEdgeObj* pSdrEdgeObj = static_cast< SdrEdgeObj* >(pSdrObject); pSdrEdgeObj->Reformat(); commit e8a4387848966616078bccc08bcf30c44d9af136 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Thu Sep 14 20:18:55 2023 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Mon Sep 18 10:13:51 2023 +0200 crashreporting: apparent null deref at SwFEShell::IsShapeDefaultHoriTextDirR2L https: //crashreport.libreoffice.org/stats/crash_details/73028951-19a0-409b-89d2-a080495df925 Change-Id: I440465a3c7d5b98ecdd1c5f1973a2b8f64d6772e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156888 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> (cherry picked from commit 7a33e2f4c6a1a3c489b6deaeaae1489acb0aa389) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156889 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx index 61f2a8ae30eb..a7e1e2228c12 100644 --- a/sw/source/core/frmedt/feshview.cxx +++ b/sw/source/core/frmedt/feshview.cxx @@ -3359,8 +3359,11 @@ bool SwFEShell::IsShapeDefaultHoriTextDirR2L() const if ( dynamic_cast<const SwVirtFlyDrawObj*>( pSdrObj) == nullptr ) { // determine page frame of the frame the shape is anchored. - const SwFrame* pAnchorFrame = - static_cast<SwDrawContact*>(GetUserCall(pSdrObj))->GetAnchorFrame( pSdrObj ); + const SwContact* pContact = GetUserCall(pSdrObj); + OSL_ENSURE( pContact, "<SwFEShell::IsShapeDefaultHoriTextDirR2L(..)> - missing contact!" ); + if (!pContact) + return false; + const SwFrame* pAnchorFrame = static_cast<const SwDrawContact*>(pContact)->GetAnchorFrame( pSdrObj ); OSL_ENSURE( pAnchorFrame, "inconsistent model - no anchor at shape!"); if ( pAnchorFrame ) { commit f6c47cdb578eb94212eae763855c734de3ed5c76 Author: Dan Horák <d...@danny.cz> AuthorDate: Tue Sep 12 10:20:51 2023 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Mon Sep 18 10:13:51 2023 +0200 bridge/powerpc64: fix integer ABI The ABI document for PowerPC64 specifies that integer values shorter than a doubleword are sign or zero extended as necessary. Until now the smaller values were treated as unsigned values and only zero-extended. Handling of signed values was incorrect. Change-Id: Icbbe8fc8d4facfa6d1b3252c99ec2d8c2552d9f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156847 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sberg...@redhat.com> (cherry picked from commit 0effeef3dc952959af50c045514bbcd135c37fb7) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156873 diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx index 612495d83395..9b66f778dfd6 100644 --- a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx @@ -256,6 +256,14 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); // verbatim! #define INSERT_INT64( pSV, nr, pGPR, pDS, bOverflow ) \ + if ( nr < ppc64::MAX_GPR_REGS ) \ + pGPR[nr++] = *reinterpret_cast<sal_Int64 *>( pSV ); \ + else \ + bOverflow = true; \ + if (bOverflow) \ + *pDS++ = *reinterpret_cast<sal_Int64 *>( pSV ); + +#define INSERT_UINT64( pSV, nr, pGPR, pDS, bOverflow ) \ if ( nr < ppc64::MAX_GPR_REGS ) \ pGPR[nr++] = *reinterpret_cast<sal_uInt64 *>( pSV ); \ else \ @@ -264,6 +272,14 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); #define INSERT_INT32( pSV, nr, pGPR, pDS, bOverflow ) \ + if ( nr < ppc64::MAX_GPR_REGS ) \ + pGPR[nr++] = *reinterpret_cast<sal_Int32 *>( pSV ); \ + else \ + bOverflow = true; \ + if (bOverflow) \ + *pDS++ = *reinterpret_cast<sal_Int32 *>( pSV ); + +#define INSERT_UINT32( pSV, nr, pGPR, pDS, bOverflow ) \ if ( nr < ppc64::MAX_GPR_REGS ) \ pGPR[nr++] = *reinterpret_cast<sal_uInt32 *>( pSV ); \ else \ @@ -272,6 +288,14 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, *pDS++ = *reinterpret_cast<sal_uInt32 *>( pSV ); #define INSERT_INT16( pSV, nr, pGPR, pDS, bOverflow ) \ + if ( nr < ppc64::MAX_GPR_REGS ) \ + pGPR[nr++] = *reinterpret_cast<sal_Int16 *>( pSV ); \ + else \ + bOverflow = true; \ + if (bOverflow) \ + *pDS++ = *reinterpret_cast<sal_Int16 *>( pSV ); + +#define INSERT_UINT16( pSV, nr, pGPR, pDS, bOverflow ) \ if ( nr < ppc64::MAX_GPR_REGS ) \ pGPR[nr++] = *reinterpret_cast<sal_uInt16 *>( pSV ); \ else \ @@ -280,6 +304,14 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, *pDS++ = *reinterpret_cast<sal_uInt16 *>( pSV ); #define INSERT_INT8( pSV, nr, pGPR, pDS, bOverflow ) \ + if ( nr < ppc64::MAX_GPR_REGS ) \ + pGPR[nr++] = *reinterpret_cast<sal_Int8 *>( pSV ); \ + else \ + bOverflow = true; \ + if (bOverflow) \ + *pDS++ = *reinterpret_cast<sal_Int8 *>( pSV ); + +#define INSERT_UINT8( pSV, nr, pGPR, pDS, bOverflow ) \ if ( nr < ppc64::MAX_GPR_REGS ) \ pGPR[nr++] = *reinterpret_cast<sal_uInt8 *>( pSV ); \ else \ @@ -335,7 +367,7 @@ static void cpp_call( #if OSL_DEBUG_LEVEL > 2 fprintf(stderr, "pCppReturn/pUnoReturn is %lx/%lx", pCppReturn, pUnoReturn); #endif - INSERT_INT64( &pCppReturn, nGPR, pGPR, pStack, bOverflow ); + INSERT_UINT64( &pCppReturn, nGPR, pGPR, pStack, bOverflow ); } } // push "this" pointer @@ -343,7 +375,7 @@ static void cpp_call( #if OSL_DEBUG_LEVEL > 2 fprintf(stderr, "this pointer is %p\n", pAdjustedThisPtr); #endif - INSERT_INT64( &pAdjustedThisPtr, nGPR, pGPR, pStack, bOverflow ); + INSERT_UINT64( &pAdjustedThisPtr, nGPR, pGPR, pStack, bOverflow ); // Args void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams ); @@ -376,26 +408,40 @@ static void cpp_call( switch (pParamTypeDescr->eTypeClass) { case typelib_TypeClass_HYPER: - case typelib_TypeClass_UNSIGNED_HYPER: #if OSL_DEBUG_LEVEL > 2 fprintf(stderr, "hyper is %lx\n", pCppArgs[nPos]); #endif INSERT_INT64( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow ); break; + case typelib_TypeClass_UNSIGNED_HYPER: +#if OSL_DEBUG_LEVEL > 2 + fprintf(stderr, "uhyper is 0x%lx\n", *(sal_Int64 *)pCppArgs[nPos]); +#endif + INSERT_UINT64( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow ); + break; case typelib_TypeClass_LONG: - case typelib_TypeClass_UNSIGNED_LONG: case typelib_TypeClass_ENUM: #if OSL_DEBUG_LEVEL > 2 fprintf(stderr, "long is %x\n", pCppArgs[nPos]); #endif INSERT_INT32( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow ); break; + case typelib_TypeClass_UNSIGNED_LONG: +#if OSL_DEBUG_LEVEL > 2 + fprintf(stderr, "ulong is 0x%x\n", *(sal_Int32 *)pCppArgs[nPos]); +#endif + INSERT_UINT32( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow ); + break; case typelib_TypeClass_SHORT: + INSERT_INT16( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow ); + break; case typelib_TypeClass_CHAR: case typelib_TypeClass_UNSIGNED_SHORT: - INSERT_INT16( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow ); + INSERT_UINT16( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow ); break; case typelib_TypeClass_BOOLEAN: + INSERT_UINT8( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow ); + break; case typelib_TypeClass_BYTE: INSERT_INT8( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow ); break; @@ -454,7 +500,7 @@ static void cpp_call( // no longer needed TYPELIB_DANGER_RELEASE( pParamTypeDescr ); } - INSERT_INT64( &(pCppArgs[nPos]), nGPR, pGPR, pStack, bOverflow ); + INSERT_UINT64( &(pCppArgs[nPos]), nGPR, pGPR, pStack, bOverflow ); } } commit 85b080acd5bfa3b52925aeb0cb7b458901a2c798 Author: Hossein <hoss...@libreoffice.org> AuthorDate: Thu Aug 31 11:02:09 2023 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Mon Sep 18 10:13:50 2023 +0200 tdf#149069 Revert "ridljar: check UnoClassLoader used for NativeLibraryLoader" This reverts commit 97b61ea3297e04e64aab1e1a4ec50202e9f86fff. It checked that the NativeLibraryLoader is an instance of the class com.sun.star.lib.unoloader.UnoClassLoader. If this is not the case, a warning was displayed. This was for java_uno bridge to work. On the other hand, as the comment in the code implies, "not a problem if this is using Java remote bridge or (in a) unit test". But, in the code there was no check for that. As a result, this warning is displayed in many places like the simple examples that want to connect to the LibreOffice process via Java API. Change-Id: I056ed372ad071573051024a63e51afd6b4425ce5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156302 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> Tested-by: Jenkins Reviewed-by: Hossein <hoss...@libreoffice.org> (cherry picked from commit 345b214c37d1f645dd0e6e084358f8ca81d9ed66) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156374 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/ridljar/com/sun/star/lib/util/NativeLibraryLoader.java b/ridljar/com/sun/star/lib/util/NativeLibraryLoader.java index d255a71ea5d1..eb5c6af34e90 100644 --- a/ridljar/com/sun/star/lib/util/NativeLibraryLoader.java +++ b/ridljar/com/sun/star/lib/util/NativeLibraryLoader.java @@ -21,7 +21,6 @@ package com.sun.star.lib.util; import java.io.File; import java.net.URL; import java.net.URLClassLoader; -import com.sun.star.lib.unoloader.UnoClassLoader; /** * Helper functions to locate and load native files. @@ -36,14 +35,6 @@ import com.sun.star.lib.unoloader.UnoClassLoader; * algorithm.</p> */ public final class NativeLibraryLoader { - static { - // if it's some other class loader, then resolving the symbol - // Java_com_sun_star_bridges_jni_1uno_JNI_1proxy_dispatch_1call in - // java_uno will not work and result in UnsatisfiedLinkError - if (!(NativeLibraryLoader.class.getClassLoader() instanceof com.sun.star.lib.unoloader.UnoClassLoader)) { - System.err.println("warning: com.sun.star.lib.util.NativeLibraryLoader must be loaded by com.sun.star.lib.unoloader.UnoClassLoader for java_uno bridge to work (not a problem if this is using Java remote bridge or unit test)"); - } - } /** * Load a system library, using a given class loader to locate the library. * commit e17b7d7cd480bad4630f51ebca4c3fae8e9d0d8f Author: Julien Nabet <serval2...@yahoo.fr> AuthorDate: Thu Sep 7 16:34:53 2023 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Mon Sep 18 10:13:50 2023 +0200 tdf#157138: Can't switch from Use Background to None area fill Revert partly tdf#151260 fix Change-Id: I4c052e2cd1cb41dc8bda4b388b46e4416e351434 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156669 (cherry picked from commit b69e14038288387b5f288a06821fb5df66dcf94e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156733 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> (cherry picked from commit 7ccaecd33a30905e3929d43c8164b16bbb101b73) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156741 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx index bbdb9733a02f..119d6d154076 100644 --- a/cui/source/tabpages/tparea.cxx +++ b/cui/source/tabpages/tparea.cxx @@ -238,11 +238,8 @@ DeactivateRC SvxAreaTabPage::DeactivatePage( SfxItemSet* _pSet ) { XFillStyleItem aStyleItem( drawing::FillStyle_NONE ); _pSet->Put( aStyleItem ); - if (_pSet->HasItem(XATTR_FILLUSESLIDEBACKGROUND)) - { - XFillUseSlideBackgroundItem aFillBgItem( false ); - _pSet->Put( aFillBgItem ); - } + XFillUseSlideBackgroundItem aFillBgItem( false ); + _pSet->Put( aFillBgItem ); } break; } commit c5cd0b43ce84abd98df1c59ec5ce4d51c560b9c4 Author: Eike Rathke <er...@redhat.com> AuthorDate: Fri Sep 1 15:20:28 2023 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Mon Sep 18 10:13:50 2023 +0200 Resolves: tdf#156985 Treat adding two KahanSum differently When summing mixed formula cells and numeric cells, cell type runs are summed using KahanSum that when switching cell types are added. Using add() to explicitly add the rhs m_fError compensation value separately may had lead to effectively cancelling out the relation of sum and error, living on with an unrelated error value. Instead, add a "final" rhs sum+compensation. Change-Id: I751d3e0eeef9cd80482895c24f05b1ab667c3020 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156253 Tested-by: Jenkins Reviewed-by: Eike Rathke <er...@redhat.com> (cherry picked from commit 1f8cc7644293e62ad6430bbeec243d3283e478d7) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156432 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sc/inc/kahan.hxx b/sc/inc/kahan.hxx index 6c84f6eeef2e..ac97ae4394fa 100644 --- a/sc/inc/kahan.hxx +++ b/sc/inc/kahan.hxx @@ -71,8 +71,15 @@ public: */ inline void add(const KahanSum& fSum) { +#ifdef _WIN32 + // For some odd unknown reason WIN32 fails badly with the + // sum+compensation value. Continue keeping the old though slightly off + // (see tdf#156985) explicit addition of the compensation value. add(fSum.m_fSum); add(fSum.m_fError); +#else + add(fSum.m_fSum + fSum.m_fError); +#endif add(fSum.m_fMem); } @@ -82,8 +89,12 @@ public: */ inline void subtract(const KahanSum& fSum) { +#ifdef _WIN32 add(-fSum.m_fSum); add(-fSum.m_fError); +#else + add(-(fSum.m_fSum + fSum.m_fError)); +#endif add(-fSum.m_fMem); }