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 j...@apache.org:
>> 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 <jim...@gmail.com>
>> 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
>>

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to