Hi all, I am sure this is only a small syntax error, but the Windows build breaks constantly...
Any ideas?
Matthias
Am 02.12.20 um 21:50 schrieb Matthias Seidel:
>
> Hi Jim,
>
> Windows buildbot breaks now in module bridges:
>
> ...
> component.cxx
> e:/slave14/openoffice-win7/build/main/bridges/source/cpp_uno/shared/component.cxx(58)
> : error C2059: syntax error : '['
> e:/slave14/openoffice-win7/build/main/bridges/source/cpp_uno/shared/component.cxx(58)
> : error C2143: syntax error : missing ';' before '{'
> e:/slave14/openoffice-win7/build/main/bridges/source/cpp_uno/shared/component.cxx(68)
> : warning C4172: returning address of local variable or temporary
> e:/slave14/openoffice-win7/build/main/bridges/source/cpp_uno/shared/component.cxx(69)
> : error C2059: syntax error : ')'
> ...
>
> For more details see:
>
> https://ci.apache.org/projects/openoffice/buildlogs/win/main/bridges/wntmsci12.pro/misc/logs/prj.txt
>
> Regards,
>
> Matthias
>
> Am 01.12.20 um 23:01 schrieb [email protected]:
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> jim pushed a commit to branch trunk
>> in repository https://gitbox.apache.org/repos/asf/openoffice.git
>>
>>
>> The following commit(s) were added to refs/heads/trunk by this push:
>> new d73dd1d Huge updates to macOS UNO bridges, based on FreeBSD and
>> Linux.
>> d73dd1d is described below
>>
>> commit d73dd1d32e12ca3b96b7bbfff854b742992ff915
>> Author: Jim Jagielski <[email protected]>
>> AuthorDate: Tue Dec 1 16:59:54 2020 -0500
>>
>> Huge updates to macOS UNO bridges, based on FreeBSD and Linux.
>>
>> (cherry picked from commit 37f4cb171557a563bb797a6166dd60f907b367f2)
>> ---
>> .../inc/bridges/cpp_uno/shared/vtablefactory.hxx | 2 +-
>> .../source/cpp_uno/gcc3_freebsd_x86-64/except.cxx | 2 +-
>> .../source/cpp_uno/s5abi_macosx_x86-64/call.s | 120
>> +++++++++++++++++++++
>> .../source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx | 68 ++----------
>> .../source/cpp_uno/s5abi_macosx_x86-64/except.cxx | 9 +-
>> .../source/cpp_uno/s5abi_macosx_x86-64/makefile.mk | 6 +-
>> .../source/cpp_uno/s5abi_macosx_x86-64/share.hxx | 8 +-
>> .../source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx | 5 +-
>> main/bridges/source/cpp_uno/shared/component.cxx | 44 +++-----
>> .../source/cpp_uno/shared/vtablefactory.cxx | 8 +-
>> main/vcl/aqua/source/app/salinst.cxx | 10 +-
>> 11 files changed, 169 insertions(+), 113 deletions(-)
>>
>> diff --git a/main/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
>> b/main/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
>> index 3fe88e5..dc15fb5 100644
>> --- a/main/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
>> +++ b/main/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
>> @@ -33,7 +33,7 @@
>> #include <hash_map>
>>
>> /*See: http://people.redhat.com/drepper/selinux-mem.html*/
>> -#if defined (LINUX) || defined (FREEBSD)
>> +#if defined (LINUX) || defined (FREEBSD) || defined(MACOSX)
>> #define USE_DOUBLE_MMAP
>> #endif
>>
>> diff --git a/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx
>> b/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx
>> index 7902bd9..bfe18db 100644
>> --- a/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx
>> +++ b/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx
>> @@ -187,7 +187,7 @@ type_info * RTTI::getRTTI(
>> typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR
>> type_info * base_rtti = getRTTI(
>> (typelib_CompoundTypeDescription
>> *)pTypeDescr->pBaseTypeDescription );
>> rtti = new __si_class_type_info(
>> - strdup( rttiName ), static_cast<__class_type_info
>> *>(base_rtti) );
>> + strdup( rttiName ), (__class_type_info *)base_rtti
>> );
>> }
>> else
>> {
>> diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/call.s
>> b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/call.s
>> new file mode 100644
>> index 0000000..4801a94
>> --- /dev/null
>> +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/call.s
>> @@ -0,0 +1,120 @@
>> +/**************************************************************
>> + *
>> + * Licensed to the Apache Software Foundation (ASF) under one
>> + * or more contributor license agreements. See the NOTICE file
>> + * distributed with this work for additional information
>> + * regarding copyright ownership. The ASF licenses this file
>> + * to you under the Apache License, Version 2.0 (the
>> + * "License"); you may not use this file except in compliance
>> + * with the License. You may obtain a copy of the License at
>> + *
>> + * http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing,
>> + * software distributed under the License is distributed on an
>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> + * KIND, either express or implied. See the License for the
>> + * specific language governing permissions and limitations
>> + * under the License.
>> + *
>> + *************************************************************/
>> +
>> + .text
>> + .align 2
>> +.globl privateSnippetExecutor
>> + .type privateSnippetExecutor, @function
>> +privateSnippetExecutor:
>> +.LFB3:
>> + pushq %rbp
>> +.LCFI0:
>> + movq %rsp, %rbp
>> +.LCFI1:
>> + subq $160, %rsp
>> +.LCFI2:
>> + movq %r10, -152(%rbp) # Save (nVtableOffset << 32) +
>> nFunctionIndex
>> +
>> + movq %rdi, -112(%rbp) # Save GP registers
>> + movq %rsi, -104(%rbp)
>> + movq %rdx, -96(%rbp)
>> + movq %rcx, -88(%rbp)
>> + movq %r8 , -80(%rbp)
>> + movq %r9 , -72(%rbp)
>> +
>> + movsd %xmm0, -64(%rbp) # Save FP registers
>> + movsd %xmm1, -56(%rbp)
>> + movsd %xmm2, -48(%rbp)
>> + movsd %xmm3, -40(%rbp)
>> + movsd %xmm4, -32(%rbp)
>> + movsd %xmm5, -24(%rbp)
>> + movsd %xmm6, -16(%rbp)
>> + movsd %xmm7, -8(%rbp)
>> +
>> + leaq -144(%rbp), %r9 # 6th param: sal_uInt64 *
>> pRegisterReturn
>> + leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw
>> + leaq -64(%rbp), %rcx # 4th param: void ** fpreg
>> + leaq -112(%rbp), %rdx # 3rd param: void ** gpreg
>> + movl -148(%rbp), %esi # 2nd param: sal_int32
>> nVtableOffset
>> + movl -152(%rbp), %edi # 1st param: sal_int32
>> nFunctionIndex
>> +
>> + call cpp_vtable_call
>> +
>> + cmp $10, %rax #
>> typelib_TypeClass_FLOAT
>> + je .Lfloat
>> + cmp $11, %rax #
>> typelib_TypeClass_DOUBLE
>> + je .Lfloat
>> +
>> + movq -144(%rbp), %rax # Return value (int case)
>> + movq -136(%rbp), %rdx # Return value (int case)
>> + movq -144(%rbp), %xmm0 # Return value (int case)
>> + movq -136(%rbp), %xmm1 # Return value (int case)
>> + jmp .Lfinish
>> +.Lfloat:
>> + movlpd -144(%rbp), %xmm0 # Return value (float/double
>> case)
>> +
>> +.Lfinish:
>> + leave
>> + ret
>> +.LFE3:
>> + .size privateSnippetExecutor, .-privateSnippetExecutor
>> + # see
>> http://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
>> + # for details of the .eh_frame, the "Common Information Entry" and
>> "Frame Description Entry" formats
>> + # and http://mentorembedded.github.io/cxx-abi/exceptions.pdf for more
>> info
>> + .section .eh_frame,"a",@progbits +.Lframe1: + .long
>> .LECIE1-.LSCIE1 +.LSCIE1: + .long 0x0
>> + .byte 0x1 + .string "zR"
>> + .uleb128 0x1
>> + .sleb128 -8
>> + .byte 0x10
>> + .uleb128 0x1
>> + .byte 0x1b
>> + .byte 0xc
>> + .uleb128 0x7
>> + .uleb128 0x8
>> + .byte 0x90
>> + .uleb128 0x1
>> + .align 8
>> +.LECIE1:
>> +.LSFDE1:
>> + .long .LEFDE1-.LASFDE1
>> +.LASFDE1:
>> + .long .LASFDE1-.Lframe1
>> + .long .LFB3-.
>> + .long .LFE3-.LFB3
>> + .uleb128 0x0
>> + .byte 0x4
>> + .long .LCFI0-.LFB3
>> + .byte 0xe
>> + .uleb128 0x10
>> + .byte 0x86
>> + .uleb128 0x2
>> + .byte 0x4
>> + .long .LCFI1-.LCFI0
>> + .byte 0xd
>> + .uleb128 0x6
>> + .align 8
>> +.LEFDE1:
>> + .section .note.GNU-stack,"",@progbits diff --git
>> a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx
>> b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx index
>> 18d81dc..9c20b7a 100644 ---
>> a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx +++
>> b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx @@
>> -395,70 +395,17 @@ extern "C" typelib_TypeClass cpp_vtable_call(
>> }
>>
>>
>> //==================================================================================================
>> +extern "C" void privateSnippetExecutor( ... );
>>
>> -// privateSnippetExecutor() is only called by the trampolines created by
>> codeSnippet()
>> -//
>> -// it saves all the registers used for parameter passing in the x86_64 ABI.
>> -// Then it uses them to provide the parameters to its cpp_vtable_call() and
>> -// to handle the return value.
>> -//
>> -// This method makes assumptions about the stack layout of the stack frame
>> above!
>> -
>> -extern "C" void privateSnippetExecutor( void )
>> -{
>> - asm volatile (
>> - "subq $160, %%rsp\n\t"
>> - "movq %%r10, -152(%%rbp)\n\t" // Save (nVtableOffset << 32) +
>> nFunctionIndex
>> -
>> - "movq %%rdi, -112(%%rbp)\n\t" // Save GP registers
>> - "movq %%rsi, -104(%%rbp)\n\t"
>> - "movq %%rdx, -96(%%rbp)\n\t"
>> - "movq %%rcx, -88(%%rbp)\n\t"
>> - "movq %%r8 , -80(%%rbp)\n\t"
>> - "movq %%r9 , -72(%%rbp)\n\t"
>> -
>> - "movsd %%xmm0, -64(%%rbp)\n\t" // Save FP registers
>> - "movsd %%xmm1, -56(%%rbp)\n\t"
>> - "movsd %%xmm2, -48(%%rbp)\n\t"
>> - "movsd %%xmm3, -40(%%rbp)\n\t"
>> - "movsd %%xmm4, -32(%%rbp)\n\t"
>> - "movsd %%xmm5, -24(%%rbp)\n\t"
>> - "movsd %%xmm6, -16(%%rbp)\n\t"
>> - "movsd %%xmm7, -8(%%rbp)\n\t"
>> -
>> - "leaq -144(%%rbp), %%r9\n\t" // 6th param: sal_uInt64*
>> pRegisterReturn
>> - "leaq 16(%%rbp), %%r8\n\t" // 5rd param: void** ovrflw
>> - "leaq -64(%%rbp), %%rcx\n\t" // 4th param: void** fpreg
>> - "leaq -112(%%rbp), %%rdx\n\t" // 3rd param: void** gpreg
>> - "movl -148(%%rbp), %%esi\n\t" // 2nd param: sal_int32
>> nVtableOffset
>> - "movl -152(%%rbp), %%edi\n\t" // 1st param: sal_int32
>> nFunctionIndex
>> -
>> - "call _cpp_vtable_call\n\t"
>> -
>> - "cmp $10, %%rax\n\t" //
>> typelib_TypeClass_FLOAT
>> - "je .Lfloat\n\t"
>> - "cmp $11, %%rax\n\t" //
>> typelib_TypeClass_DOUBLE
>> - "je .Lfloat\n\t"
>> -
>> - "movq -144(%%rbp), %%rax\n\t" // Return value (int case)
>> - "movq -136(%%rbp), %%rdx\n\t" // Return value (int case)
>> - "movq -144(%%rbp), %%xmm0\n\t" // Return value (int case)
>> - "movq -136(%%rbp), %%xmm1\n\t" // Return value (int case)
>> - "jmp .Lfinish\n"
>> -".Lfloat:\n\t"
>> - "movlpd -144(%%rbp), %%xmm0\n" // Return value (float/double
>> case)
>> -".Lfinish:\n\t"
>> - "addq $160, %%rsp\n"
>> - :
>> - :
>> - : "rax", "r10", "xmm0" );
>> -}
>> -
>> -static const int codeSnippetSize = 24;
>> +const int codeSnippetSize = 24;
>>
>> // Generate a trampoline that redirects method calls to
>> // privateSnippetExecutor().
>> //
>> +// privateSnippetExecutor() saves all the registers that are used for
>> +// parameter passing on x86_64, and calls the cpp_vtable_call().
>> +// When it returns, privateSnippetExecutor() sets the return value.
>> +//
>> // Note: The code snippet we build here must not create a stack frame,
>> // otherwise the UNO exceptions stop working thanks to non-existing
>> // unwinding info.
>> @@ -515,11 +462,10 @@
>> bridges::cpp_uno::shared::VtableFactory::initializeBlock(
>>
>> //==================================================================================================
>>
>> unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
>> - Slot ** slots, unsigned char * code, /*sal_PtrDiff writetoexecdiff,*/
>> + Slot ** slots, unsigned char * code, sal_PtrDiff writetoexecdiff,
>> typelib_InterfaceTypeDescription const * type, sal_Int32
>> nFunctionOffset,
>> sal_Int32 functionCount, sal_Int32 nVtableOffset )
>> {
>> - static const sal_PtrDiff writetoexecdiff = 0;
>> (*slots) -= functionCount;
>> Slot * s = *slots;
>> for ( sal_Int32 nPos = 0; nPos < type->nMembers; ++nPos )
>> diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx
>> b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx
>> index f9a11ef..0d64e70 100644
>> --- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx
>> +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx
>> @@ -141,7 +141,7 @@ type_info * RTTI::getRTTI(
>> typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR
>> t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) );
>> if (iFind == m_rttis.end())
>> {
>> - // build the mangled name for unoName's RTTI typeinfo symbol
>> + // RTTI symbol
>> OStringBuffer buf( 64 );
>> buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") );
>> sal_Int32 index = 0;
>> @@ -174,7 +174,7 @@ type_info * RTTI::getRTTI(
>> typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR
>> // symbol and rtti-name is nearly identical,
>> // the symbol is prefixed with _ZTI
>> char const * rttiName = symName.getStr() +4;
>> -#if OSL_DEBUG_LEVEL >= 1
>> +#if OSL_DEBUG_LEVEL > 1
>> fprintf( stderr,"generated rtti for %s\n", rttiName );
>> const OString aCUnoName = OUStringToOString( unoName,
>> RTL_TEXTENCODING_UTF8);
>> OSL_TRACE( "TypeInfo for \"%s\" not found and cannot be
>> generated.\n", aCUnoName.getStr());
>> @@ -200,8 +200,9 @@ type_info * RTTI::getRTTI(
>> typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR
>> rtti = NULL;
>> #endif
>>
>> - bool bOK = m_generatedRttis.insert( t_rtti_map::value_type(
>> unoName, rtti )).second;
>> - OSL_ENSURE( bOK, "### inserting new generated rtti
>> failed?!" );
>> + pair< t_rtti_map::iterator, bool > insertion(
>> + m_generatedRttis.insert( t_rtti_map::value_type(
>> unoName, rtti ) ) );
>> + OSL_ENSURE( insertion.second, "### inserting new generated
>> rtti failed?!" );
>> }
>> else // taking already generated rtti
>> {
>> diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk
>> b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk
>> index 7f92ad1..7f64991 100644
>> --- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk
>> +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk
>> @@ -48,7 +48,8 @@ SLOFILES= \
>> $(SLO)$/abi.obj \
>> $(SLO)$/except.obj \
>> $(SLO)$/cpp2uno.obj \
>> - $(SLO)$/uno2cpp.obj
>> + $(SLO)$/uno2cpp.obj \
>> + $(SLO)$/call.obj
>>
>> SHL1TARGET= $(TARGET)
>>
>> @@ -70,3 +71,6 @@ SHL1STDLIBS= \
>>
>> .INCLUDE : target.mk
>>
>> +$(SLO)$/%.obj: %.s
>> + $(CC) -c -o $(SLO)$/$(@:b).o $<
>> + touch $@
>> diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/share.hxx
>> b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/share.hxx
>> index b64609d..c3c84d6 100644
>> --- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/share.hxx
>> +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/share.hxx
>> @@ -36,11 +36,11 @@ void dummy_can_throw_anything( char const * );
>>
>> struct _Unwind_Exception
>> {
>> - unsigned long exception_class;
>> + unsigned exception_class __attribute__((__mode__(__DI__)));
>> void * exception_cleanup;
>> - uintptr_t private_1;
>> - uintptr_t private_2;
>> -};
>> + unsigned private_1 __attribute__((__mode__(__word__)));
>> + unsigned private_2 __attribute__((__mode__(__word__)));
>> +} __attribute__((__aligned__));
>>
>> struct __cxa_exception
>> {
>> diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx
>> b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx
>> index 6d7d581..a58791c 100644
>> --- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx
>> +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx
>> @@ -149,9 +149,8 @@ static void callVirtualMethod(void * pThis, sal_uInt32
>> nVtableIndex,
>> :
>> : "m" ( pMethod ), "m" ( pGPR ), "m" ( pFPR ), "m" ( nFPR ),
>> "m" ( rax ), "m" ( rdx ), "m" ( xmm0 ), "m" ( xmm1 ),
>> - "m" (pCallStack) // dummy input to prevent the compiler from
>> optimizing it out
>> - : "rax", "rbx", "rcx", "rdx", "rdi", "rsi", "r8", "r9",
>> - "r10", "r11", "r10", "r12", "r13", "r14", "r15", "rbx",
>> + "m" (pCallStack) // dummy input to prevent the compiler from
>> optimizing the alloca out
>> + : "rax", "rdi", "rsi", "rdx", "rcx", "r8", "r9", "r11",
>> "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7"
>> );
>>
>> diff --git a/main/bridges/source/cpp_uno/shared/component.cxx
>> b/main/bridges/source/cpp_uno/shared/component.cxx
>> index dfa5a8d..da729d4 100644
>> --- a/main/bridges/source/cpp_uno/shared/component.cxx
>> +++ b/main/bridges/source/cpp_uno/shared/component.cxx
>> @@ -53,42 +53,22 @@ rtl_StandardModuleCount g_moduleCount =
>> MODULE_COUNT_INIT;
>>
>> namespace {
>>
>> -#if (defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)) \
>> - || (defined(__GNUC__) && defined(__APPLE__))
>> -static ::rtl::OUString * s_pStaticOidPart = 0;
>> -#endif
>> -
>> const ::rtl::OUString & SAL_CALL cppu_cppenv_getStaticOIdPart() SAL_THROW(
>> () )
>> {
>> -#if ! ((defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)) \
>> - || (defined(__GNUC__) && defined(__APPLE__)))
>> - static ::rtl::OUString * s_pStaticOidPart = 0;
>> -#endif
>> - if (! s_pStaticOidPart)
>> - {
>> - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
>> - if (! s_pStaticOidPart)
>> + static ::rtl::OUString s_aStaticOidPart = []() {
>> + ::rtl::OUStringBuffer aRet( 64 );
>> + aRet.appendAscii( RTL_CONSTASCII_STRINGPARAM("];") );
>> + // good guid
>> + sal_uInt8 ar[16];
>> + ::rtl_getGlobalProcessId(ar);
>> + for ( sal_Int32 i = 0; i < 16; ++i )
>> {
>> - ::rtl::OUStringBuffer aRet( 64 );
>> - aRet.appendAscii( RTL_CONSTASCII_STRINGPARAM("];") );
>> - // good guid
>> - sal_uInt8 ar[16];
>> - ::rtl_getGlobalProcessId( ar );
>> - for ( sal_Int32 i = 0; i < 16; ++i )
>> - {
>> - aRet.append( (sal_Int32)ar[i], 16 );
>> - }
>> -#if (defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)) \
>> - || (defined(__GNUC__) && defined(__APPLE__))
>> - s_pStaticOidPart = new ::rtl::OUString(
>> aRet.makeStringAndClear() );
>> -#else
>> - static ::rtl::OUString s_aStaticOidPart(
>> - aRet.makeStringAndClear() );
>> - s_pStaticOidPart = &s_aStaticOidPart;
>> -#endif
>> + aRet.append( (sal_Int32)ar[i], 16 );
>> }
>> - }
>> - return *s_pStaticOidPart;
>> + return aRet.makeStringAndClear();
>> + }();
>> + return s_aStaticOidPart;
>> +
>> }
>>
>> }
>> diff --git a/main/bridges/source/cpp_uno/shared/vtablefactory.cxx
>> b/main/bridges/source/cpp_uno/shared/vtablefactory.cxx
>> index f4d6c56..35bad98 100644
>> --- a/main/bridges/source/cpp_uno/shared/vtablefactory.cxx
>> +++ b/main/bridges/source/cpp_uno/shared/vtablefactory.cxx
>> @@ -96,6 +96,11 @@ extern "C" void * SAL_CALL allocExec(rtl_arena_type *,
>> sal_Size * size) {
>> sal_Size n = (*size + (pagesize - 1)) & ~(pagesize - 1);
>> void * p;
>> #if defined SAL_UNX
>> +#if defined MACOSX
>> + p = mmap(
>> + 0, n, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON |
>> MAP_JIT, -1,
>> + 0);
>> +#else
>> p = mmap(
>> 0, n, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1,
>> 0);
>> @@ -107,6 +112,7 @@ extern "C" void * SAL_CALL allocExec(rtl_arena_type *,
>> sal_Size * size) {
>> munmap (static_cast<char*>(p), n);
>> p = 0;
>> }
>> +#endif
>> #elif defined SAL_W32
>> p = VirtualAlloc(0, n, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
>> #elif defined(SAL_OS2)
>> @@ -195,7 +201,7 @@ VtableFactory::VtableFactory(): m_arena(
>> rtl_arena_create(
>> "bridges::cpp_uno::shared::VtableFactory",
>> sizeof (void *), // to satisfy alignment requirements
>> - 0, reinterpret_cast< rtl_arena_type * >(-1), allocExec, freeExec,
>> 0))
>> + 0, reinterpret_cast< rtl_arena_type * >( 0 ), allocExec, freeExec,
>> 0))
>> {
>> if (m_arena == 0) {
>> throw std::bad_alloc();
>> diff --git a/main/vcl/aqua/source/app/salinst.cxx
>> b/main/vcl/aqua/source/app/salinst.cxx
>> index 66ff6af..8ba2d56 100644
>> --- a/main/vcl/aqua/source/app/salinst.cxx
>> +++ b/main/vcl/aqua/source/app/salinst.cxx
>> @@ -781,18 +781,18 @@ void AquaSalInstance::Yield( bool bWait, bool
>> bHandleAllCurrentEvents )
>> }
>> osl_setCondition( maWaitingYieldCond );
>> }
>> - else if( bWait )
>> + else if( bWait && maWaitingYieldCond )
>> {
>> // #i103162#
>> // wait until any thread (most likely the main thread)
>> - // has dispatched an event, cop out at 200 ms
>> + // has dispatched an event, cop out at 500 ms
>> + sal_uLong nCount;
>> + TimeValue aVal = { 0, 500000000 };
>> osl_resetCondition( maWaitingYieldCond );
>> - TimeValue aVal = { 0, 200000000 };
>> - sal_uLong nCount = ReleaseYieldMutex();
>> + nCount = ReleaseYieldMutex();
>> osl_waitCondition( maWaitingYieldCond, &aVal );
>> AcquireYieldMutex( nCount );
>> }
>> -
>> // we get some apple events way too early
>> // before the application is ready to handle them,
>> // so their corresponding application events need to be delayed
>>
smime.p7s
Description: S/MIME Cryptographic Signature
