[Libreoffice-commits] core.git: Branch 'ports/macosx10.5/master' - 1730 commits - accessibility/inc accessibility/Library_acc.mk accessibility/source android/Bootstrap android/source animations/source apple_remote/Library_AppleRemote.mk apple_remote/source avmedia/Library_avmediaogl.mk avmedia/Library_avmediaQuickTime.mk avmedia/Module_avmedia.mk avmedia/source basctl/inc basctl/source basctl/uiconfig basebmp/inc basebmp/source basebmp/test basegfx/inc basegfx/source basic/inc basic/Library_sb.mk basic/qa basic/source bean/BUCK bean/com bean/pom.officebean.xml bin/find-unused-defines.awk bin/find-unused-typedefs.py bin/find-unused-typedefs.sh bin/gbuild-to-ide bin/get-bugzilla-attachments-by-mimetype bin/lo-all-static-libs bin/mvn.py bin/rename-sw-abbreviations.sh bin/update_pch bin/update_pch_autotune.sh bin/update_pch_bisect bin/update_pch.sh bridges/inc bridges/Library_cpp_uno.mk bridges/source bridges/test BUCK .buckconfig .buckversion canvas/source chart2/inc chart2/Library_chartcore.mk char t2/Library_chartopengl.mk chart2/qa chart2/source chart2/uiconfig clew/Library_clew.mk clew/Module_clew.mk codemaker/source comphelper/inc comphelper/qa comphelper/source compilerplugins/clang config_host/config_mingw.h.in config_host/config_vcl.h.in config_host/config_version.h.in config_host/config_writerperfect.h.in config_host.mk.in configmgr/inc configmgr/source configure.ac connectivity/inc connectivity/Library_evoab.mk connectivity/Library_mork.mk connectivity/Library_odbc.mk connectivity/source cppcanvas/inc cppcanvas/source cppuhelper/inc cppuhelper/Module_cppuhelper.mk cppuhelper/qa cppuhelper/source cppuhelper/test cppu/qa cppu/source cui/inc cui/Library_cui.mk cui/source cui/uiconfig dbaccess/inc dbaccess/Module_dbaccess.mk dbaccess/source dbaccess/uiconfig dbaccess/util desktop/CppunitTest_desktop_lib.mk desktop/inc desktop/Library_sofficeapp.mk desktop/qa desktop/README desktop/scripts desktop/source desktop/test desktop/util desktop/win32 desktop/WinResTarget_sbase.mk desktop/WinResTarget_scalc.mk desktop/WinResTarget_sdraw.mk desktop/WinResTarget_simpress.mk desktop/WinResTarget_smath.mk desktop/WinResTarget_sofficebin.mk desktop/WinResTarget_soffice.mk desktop/WinResTarget_sweb.mk desktop/WinResTarget_swriter.mk dictionaries distro-configs/Jenkins download.lst drawinglayer/inc drawinglayer/source dtrans/source editeng/inc editeng/source embeddedobj/source embeddedobj/test embedserv/Library_inprocserv.mk embedserv/source extensions/Executable_pluginapp.bin.mk extensions/Library_pl.mk extensions/Library_updatecheckui.mk extensions/Library_updatefeed.mk extensions/Library_updchk.mk extensions/Module_extensions.mk extensions/source extensions/StaticLibrary_plugcon.mk extensions/test extensions/uiconfig external/apache-commons external/beanshell external/boost external/cairo external/clucene external/curl external/glm external/glyphy external/hsqldb external/icu external/jfreereport external/jpeg-turbo external/languagetool external/libetonyek exte rnal/libmwaw external/liborcus external/libpng external/libxml2 external/libxslt external/mdds external/mdnsresponder external/Module_external.mk external/np_sdk external/nss external/openssl external/poppler external/python3 external/rhino extras/source filter/Configuration_filter.mk filter/Library_gie.mk filter/qa filter/source forms/inc forms/source formula/source fpicker/Library_fps_aqua.mk fpicker/source framework/dtd framework/inc framework/Library_fwk.mk framework/source framework/uiconfig framework/UIConfig_startmodule.mk framework/util .gitignore helpcompiler/inc helpcompiler/source helpcontent2 hwpfilter/inc hwpfilter/source i18nlangtag/source i18npool/inc i18npool/qa i18npool/source icon-themes/breeze icon-themes/crystal icon-themes/elementary icon-themes/galaxy icon-themes/hicontrast icon-themes/human icon-themes/industrial icon-themes/oxygen icon-themes/README icon-themes/sifr icon-themes/tango icon-themes/tango_testing idlc/inc idlc/source idl/inc idl/source include/ap ple_remote include/basebmp include/basegfx include/basic include/canvas include/com include/comphelper include/connectivity include/cppu include/cppuhelper include/dbaccess include/default.rc include/drawinglayer include/editeng include/filter include/formula include/framework include/LibreOfficeKit include/oox include/opencl include/osl include/package include/postwin.h include/prewin.h include/registry include/rtl include/sal include/salhelper include/sax include/sfx2 include/sot include/svl include/svtools include/svx include/test include/toolkit include/tools include/ucbhelper include/unotools include/vbahelper include/vcl include/version.hrc include/xmloff include/xmlscript instsetoo_native/CustomTarget_install.mk instsetoo_native/CustomTarget_setup.mk instsetoo_native/util ios/experimental io/source io/test javaunohelper/BUCK javaunohelper/pom.juh.xml javaunohelper/source jurt/BUCK jurt/com jurt/pom.jurt.xml jvmaccess/source jvmfwk/Library_jvmfwk.mk jvmfwk/plugins jvmfwk/sourc e l10ntools/inc l10ntools/source Library_merged.mk libreofficekit/Library_libreofficekitgtk.mk libreofficekit/qa libreofficekit/README libreofficekit/source lingucomponent/Module_lingucomponent.mk lingucomponent/source linguistic/source linguistic/workben lotuswordpro/inc lotuswordpro/source m4/libo_pkg_version.m4 Makefile.fetch Makefile.in mysqlc/source odk/CppunitTest_odk_checkapi.mk odk/CustomTarget_settings.mk odk/examples odk/Package_odk_headers.mk odk/source offapi/com offapi/type_reference offapi/UnoApi_offapi.mk officecfg/registry oox/inc oox/source package/inc package/source postprocess/CustomTarget_registry.mk postprocess/packimages postprocess/Rdb_services.mk pyuno/source qadevOOo/Jar_OOoRunner.mk qadevOOo/objdsc qadevOOo/runner qadevOOo/tests readlicense_oo/docs readlicense_oo/license README.cross README.md registry/source remotebridges/examples remotebridges/source reportdesign/inc reportdesign/source reportdesign/uiconfig RepositoryExternal.mk RepositoryFixes.mk Reposi tory.mk ridljar/BUCK ridljar/pom.ridl.xml ridljar/pom.unoloader.xml ridljar/source rsc/inc sal/cpprt sal/inc sal/Library_sal.mk sal/osl sal/qa sal/rtl sax/source sax/test scaddins/source sc/AllLangResTarget_sc.mk sccomp/source sc/CppunitTest_sc_ucalc.mk sc/inc sc/Library_scqahelper.mk sc/Module_sc.mk scp2/source sc/qa scripting/source sc/source sc/uiconfig sc/UIConfig_scalc.mk sc/workben sd/CppunitTest_sd_misc_tests.mk sd/CppunitTest_sd_uimpress.mk sdext/CppunitTest_sdext_pdfimport.mk sdext/Executable_pdf2xml.mk sdext/Executable_pdfunzip.mk sdext/inc sdext/Library_pdfimport.mk sdext/Module_sdext.mk sdext/source sdext/StaticLibrary_pdfimport_s.mk sd/inc sd/Library_sd.mk sd/Library_sdui.mk sd/Module_sd.mk sd/qa sd/sdi sd/source sd/uiconfig sd/util sd/xml setup_native/install_name_patcher.app setup_native/scripts setup_native/source sfx2/AllLangResTarget_sfx2.mk sfx2/inc sfx2/Library_sfx.mk sfx2/sdi sfx2/source sfx2/uiconfig sfx2/util shell/CppunitTest_shell_zip.mk shell/inc shell/Libr ary_macbe.mk shell/Library_ooofilt.mk shell/Library_ooofilt_x64.mk shell/Library_propertyhdl.mk shell/Library_propertyhdl_x64.mk shell/Library_shlxthdl.mk shell/Library_shlxthdl_x64.mk shell/Module_shell.mk shell/Package_scripts_gnome.mk shell/source slideshow/inc slideshow/Library_OGLTrans.mk slideshow/opengl slideshow/Package_opengl.mk slideshow/source smoketest/Executable_libtest.mk smoketest/README solenv/bin solenv/buck solenv/gbuild solenv/gcc-wrappers solenv/gdb solenv/maven soltools/mkdepend sot/inc sot/source starmath/inc starmath/source starmath/uiconfig stoc/source store/source svgio/inc svgio/qa svgio/source svl/inc svl/source svtools/AllLangResTarget_svt.mk svtools/inc svtools/Library_svt.mk svtools/source svx/inc svx/Library_svxcore.mk svx/Library_svx.mk svx/Module_svx.mk svx/sdi svx/source svx/uiconfig svx/util sw/AllLangResTarget_sw.mk sw/CppunitTest_sw_filters_test.mk sw/CppunitTest_sw_globalfilter.mk sw/CppunitTest_sw_ooxmlimport.mk sw/CppunitTest_sw_ww8export.mk s w/CppunitTest_sw_ww8import.mk sw/inc sw/JunitTest_sw_complex.mk sw/Library_sw.mk sw/Module_sw.mk sw/ooxmlexport_setup.mk sw/PythonTest_sw_python.mk sw/qa sw/sdi sw/source sw/uiconfig sw/UIConfig_sglobal.mk sw/UIConfig_sweb.mk sw/UIConfig_swform.mk sw/UIConfig_swreport.mk sw/UIConfig_swriter.mk sw/UIConfig_swxform.mk sysui/CustomTarget_deb.mk sysui/CustomTarget_rpm.mk sysui/desktop test/source testtools/source toolkit/Library_tk.mk toolkit/source tools/inc tools/source translations ucbhelper/source ucb/Library_ucpdav1.mk ucb/source UnoControls/source unodevtools/source unoidl/source unoil/BUCK unoil/pom.unoil.xml unotools/inc unotools/source unoxml/inc unoxml/source unusedcode.easy unusedcode.exclude ure/source uui/inc uui/source vbahelper/inc vbahelper/source vcl/android vcl/Executable_xid_fullscreen_on_all_monitors.mk vcl/generic vcl/glyphy vcl/headless vcl/inc vcl/ios vcl/Library_vcl.mk vcl/Library_vclplug_gtk3.mk vcl/Library_vclplug_gtk.mk vcl/opengl vcl/osx vcl/qa vcl/quartz vcl /README.vars vcl/source vcl/StaticLibrary_glxtest.mk vcl/StaticLibrary_vclmain.mk vcl/unx vcl/win vcl/WinResTarget_vcl.mk vcl/workben winaccessibility/inc winaccessibility/source wizards/com wizards/source writerfilter/inc writerfilter/Library_writerfilter.mk writerfilter/qa writerfilter/source writerperfect/CppunitTest_writerperfect_calc.mk writerperfect/CppunitTest_writerperfect_draw.mk writerperfect/CppunitTest_writerperfect_impress.mk writerperfect/CppunitTest_writerperfect_writer.mk writerperfect/inc writerperfect/qa writerperfect/source xmerge/source xmlhelp/source xmloff/inc xmloff/source xmlscript/inc xmlscript/source xmlsecurity/inc xmlsecurity/source

Douglas Mencken dougmencken at gmail.com
Thu Dec 17 21:56:41 PST 2015


Rebased ref, commits from common ancestor:
commit 871c2d61669e46990a1ceea59cfa2b6a69902a06
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Dec 11 15:15:41 2015 -0500

    deal with some math functions and std:: namespace
    
    { 1st } there's no `copysign' function in std:: on Mac OS X for PowerPC
    
    see also commits
      4340cc7a63c3a94a7b95e014a501b44d886e18bb
      966fbbc78f0a154bb3f21506cf882b972c3652df
      cc906ec47eaaad247e8fbed5c9e6f3604a8b64c7
    
    { 2nd } `isnan' wants to live in std:: namespace
    
    xmloff/source/draw/ximp3dscene.cxx: isnan --> std::isnan
    
    Change-Id: I913b7931fdb433a5e2e15babcce6bec59e36769f

diff --git a/vcl/source/filter/sgvspln.cxx b/vcl/source/filter/sgvspln.cxx
index 762e310..20600f2 100644
--- a/vcl/source/filter/sgvspln.cxx
+++ b/vcl/source/filter/sgvspln.cxx
@@ -23,7 +23,7 @@
 #include <sgvspln.hxx>
 #include <cmath>
 
-#if defined(ANDROID)
+#if defined(ANDROID) || ( defined(__APPLE__) && (defined(__POWERPC__) || defined(__ppc__)) )
 namespace std
 {
 template<typename T>
diff --git a/xmloff/source/draw/ximp3dscene.cxx b/xmloff/source/draw/ximp3dscene.cxx
index 5cf205f..525e2fb 100644
--- a/xmloff/source/draw/ximp3dscene.cxx
+++ b/xmloff/source/draw/ximp3dscene.cxx
@@ -66,7 +66,7 @@ SdXML3DLightContext::SdXML3DLightContext(
             {
                 ::basegfx::B3DVector aVal;
                 SvXMLUnitConverter::convertB3DVector(aVal, sValue);
-                if (!isnan(aVal.getX()) && !isnan(aVal.getY()) && !isnan(aVal.getZ()))
+                if (!std::isnan(aVal.getX()) && !std::isnan(aVal.getY()) && !std::isnan(aVal.getZ()))
                 {
                     maDirection = aVal;
                 }
commit 4c41610d1bd5f1587958de599da995042bbcc317
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Dec 11 13:18:00 2015 -0500

    make the >>jvmfwk<< library to be compatible with Mac OS X 10.5
    
    Change-Id: I1f6ba607154d7250bbc8cc0bb85ff234909ad795

diff --git a/jvmfwk/Library_jvmfwk.mk b/jvmfwk/Library_jvmfwk.mk
index f3373b7..3a078fc 100644
--- a/jvmfwk/Library_jvmfwk.mk
+++ b/jvmfwk/Library_jvmfwk.mk
@@ -55,10 +55,6 @@ $(eval $(call gb_Library_use_externals,jvmfwk,\
 ))
 
 ifeq ($(OS),MACOSX)
-$(eval $(call gb_Library_add_cxxflags,jvmfwk,\
-    $(gb_OBJCXXFLAGS) \
-))
-
 $(eval $(call gb_Library_add_objcxxobjects,jvmfwk,\
     jvmfwk/plugins/sunmajor/pluginlib/util_cocoa \
 ))
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
index 52d1a3c..eb24cbb 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
@@ -238,12 +238,20 @@ javaPluginError checkJavaVersionRequirements(
 {
     if (!sMinVersion.isEmpty())
     {
+      #ifndef __OBJC__
         try
+      #else
+        @try
+      #endif
         {
             if (aVendorInfo->compareVersions(sMinVersion) < 0)
                 return JFW_PLUGIN_E_FAILED_VERSION;
         }
+      #ifndef __OBJC__
         catch (MalformedVersionException&)
+      #else
+        @catch (...)
+      #endif
         {
             //The minVersion was not recognized as valid for this vendor.
             JFW_ENSURE(
@@ -257,12 +265,20 @@ javaPluginError checkJavaVersionRequirements(
 
     if (!sMaxVersion.isEmpty())
     {
+      #ifndef __OBJC__
         try
+      #else
+        @try
+      #endif
         {
             if (aVendorInfo->compareVersions(sMaxVersion) > 0)
                 return JFW_PLUGIN_E_FAILED_VERSION;
         }
+      #ifndef __OBJC__
         catch (MalformedVersionException&)
+      #else
+        @catch (...)
+      #endif
         {
             //The maxVersion was not recognized as valid for this vendor.
             JFW_ENSURE(
@@ -277,12 +293,20 @@ javaPluginError checkJavaVersionRequirements(
     for (int i = 0; i < nLenList; i++)
     {
         OUString sExVer(arExcludeList[i]);
+      #ifndef __OBJC__
         try
+      #else
+        @try
+      #endif
         {
             if (aVendorInfo->compareVersions(sExVer) == 0)
                 return JFW_PLUGIN_E_FAILED_VERSION;
         }
+      #ifndef __OBJC__
         catch (MalformedVersionException&)
+      #else
+        @catch (...)
+      #endif
         {
             //The excluded version was not recognized as valid for this vendor.
             JFW_ENSURE(
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/util.cxx b/jvmfwk/plugins/sunmajor/pluginlib/util.cxx
index f16f96f..e4f1d9d 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/util.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/util.cxx
@@ -720,22 +720,38 @@ void bubbleSortVersion(vector<rtl::Reference<VendorBase> >& vec)
             // valid version
 
             //check if version of current is recognized, by comparing it with itself
+          #ifndef __OBJC__
             try
+          #else
+            @try
+          #endif
             {
                 (void)cur->compareVersions(cur->getVersion());
             }
+          #ifndef __OBJC__
             catch (MalformedVersionException &)
+          #else
+            @catch (...)
+          #endif
             {
                 nCmp = -1; // current < next
             }
             //The version of cur is valid, now compare with the second version
             if (nCmp == 0)
             {
+              #ifndef __OBJC__
                 try
+              #else
+                @try
+              #endif
                 {
                     nCmp = cur->compareVersions(next->getVersion());
                 }
+              #ifndef __OBJC__
                 catch (MalformedVersionException & )
+              #else
+                @catch (...)
+              #endif
                 {
                     //The second version is invalid, therefore it regards less.
                     nCmp = 1;
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/util_cocoa.mm b/jvmfwk/plugins/sunmajor/pluginlib/util_cocoa.mm
index 5755d4c..39bad33 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/util_cocoa.mm
+++ b/jvmfwk/plugins/sunmajor/pluginlib/util_cocoa.mm
@@ -27,19 +27,41 @@ bool JvmfwkUtil_isLoadableJVM( OUString const & aURL )
             // JRE will cause OS X's JavaVM framework to display a dialog and
             // invoke exit() when loaded via JNI on OS X 10.10
             NSURL *pTmpURL = [NSURL URLWithString:pString];
+          #if MACOSX_SDK_VERSION >= 1060
             if ( pTmpURL )
-                pTmpURL = [pTmpURL filePathURL];
+                pTmpURL = [pTmpURL filePathURL]; // pTmpURL = [NSURL URLWithString:[pTmpURL path]];
+          #endif
             if ( pTmpURL )
+            {
+              #if MACOSX_SDK_VERSION < 1060
+                pTmpURL = [ NSURL URLWithString:[[pTmpURL path] stringByStandardizingPath] ];
+              #else
                 pTmpURL = [pTmpURL URLByStandardizingPath];
+              #endif
+            }
             if ( pTmpURL )
+            {
+              #if MACOSX_SDK_VERSION < 1060
+                pTmpURL = [ NSURL URLWithString:[[pTmpURL path] stringByResolvingSymlinksInPath] ];
+              #else
                 pTmpURL = [pTmpURL URLByResolvingSymlinksInPath];
+              #endif
+            }
             if ( pTmpURL )
             {
                 NSURL *pJVMsDirURL = [NSURL URLWithString:@"file:///Library/Java/JavaVirtualMachines/"];
+              #if MACOSX_SDK_VERSION >= 1060
                 if ( pJVMsDirURL )
-                    pJVMsDirURL= [pJVMsDirURL filePathURL];
+                    pJVMsDirURL = [pJVMsDirURL filePathURL]; // pJVMsDirURL = [NSURL URLWithString:[pJVMsDirURL path]];
+              #endif
                 if ( pJVMsDirURL )
+                {
+                  #if MACOSX_SDK_VERSION < 1060
+                    pJVMsDirURL = [ NSURL URLWithString:[[pJVMsDirURL path] stringByStandardizingPath] ];
+                  #else
                     pJVMsDirURL = [pJVMsDirURL URLByStandardizingPath];
+                  #endif
+                }
                 // The JVM directory must not contain softlinks or the JavaVM
                 // framework bug will occur so don't resolve softlinks in the
                 // JVM directory
@@ -59,11 +81,16 @@ bool JvmfwkUtil_isLoadableJVM( OUString const & aURL )
             while ( pURL )
             {
                 // Check if this is a valid bundle
-                NSNumber *pDir = nil;
-                NSURL *pContentsURL = [pURL URLByAppendingPathComponent:@"Contents"];
-                if ( pContentsURL && [pContentsURL getResourceValue:&pDir forKey:NSURLIsDirectoryKey error:nil] && pDir && [pDir boolValue] )
+                NSURL *pContentsURL = nil;
+              #if MACOSX_SDK_VERSION < 1060
+                pContentsURL = [NSURL URLWithString:[[pURL path] stringByAppendingPathComponent:@"Contents"]];
+              #else
+                pContentsURL = [pURL URLByAppendingPathComponent:@"Contents"];
+              #endif
+                BOOL isDir = NO;
+                if ( pContentsURL && [[NSFileManager defaultManager] fileExistsAtPath:[pContentsURL path] isDirectory:&isDir] && isDir )
                 {
-                    NSBundle *pBundle = [NSBundle bundleWithURL:pURL];
+                    NSBundle *pBundle = [NSBundle bundleWithPath:[pURL path]];
                     if ( pBundle )
                     {
                         // Make sure that this bundle's Info.plist has the
@@ -110,13 +137,25 @@ bool JvmfwkUtil_isLoadableJVM( OUString const & aURL )
                 }
 
                 NSURL *pOldURL = pURL;
+              #if MACOSX_SDK_VERSION >= 1060
                 pURL = [pURL URLByDeletingLastPathComponent];
+              #else
+                pURL = [ NSURL URLWithString:[[pURL path] stringByDeletingLastPathComponent] ];
+              #endif
                 if ( pURL )
                 {
+                  #if MACOSX_SDK_VERSION >= 1060
                     pURL = [pURL URLByStandardizingPath];
+                  #else
+                    pURL = [ NSURL URLWithString:[[pURL path] stringByStandardizingPath] ];
+                  #endif
                     if ( pURL )
                     {
+                      #if MACOSX_SDK_VERSION >= 1060
                         pURL = [pURL URLByResolvingSymlinksInPath];
+                      #else
+                        pURL = [ NSURL URLWithString:[[pURL path] stringByResolvingSymlinksInPath] ];
+                      #endif
                         if ( pURL && [pURL isEqual:pOldURL] )
                             pURL = nil;
                     }
commit 27b1d4fd18f4684e8f1cc3f0ea66959a281ccca7
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Oct 16 16:12:46 2015 -0400

    temporarily(?) disable some unit tests for Mac OS X 10.5
    
      sw       ~  ww8export & ww8import
      dbaccess ~  RowSetClones & hsqldb_test
    
    besides, reintroduce workarounds for some tests
    
    Change-Id: I4eac2739c3f6ed5d992072a537e3728e1fdbe60d

diff --git a/dbaccess/Module_dbaccess.mk b/dbaccess/Module_dbaccess.mk
index 200dea0..31688e9 100644
--- a/dbaccess/Module_dbaccess.mk
+++ b/dbaccess/Module_dbaccess.mk
@@ -46,12 +46,14 @@ $(eval $(call gb_Module_add_check_targets,dbaccess,\
 	CppunitTest_dbaccess_nolib_save \
 	CppunitTest_dbaccess_macros_test \
 	$(if $(ENABLE_JAVA), \
-		CppunitTest_dbaccess_RowSetClones) \
+		$(if $(filter-out 1050,$(MACOSX_SDK_VERSION)), \
+			CppunitTest_dbaccess_RowSetClones)) \
 ))
 
 ifeq ($(ENABLE_JAVA),TRUE)
 $(eval $(call gb_Module_add_check_targets,dbaccess,\
-    CppunitTest_dbaccess_hsqldb_test \
+    $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)), \
+        CppunitTest_dbaccess_hsqldb_test) \
 ))
 endif
 
diff --git a/filter/qa/cppunit/xslt-test.cxx b/filter/qa/cppunit/xslt-test.cxx
index 4975719..329a076 100644
--- a/filter/qa/cppunit/xslt-test.cxx
+++ b/filter/qa/cppunit/xslt-test.cxx
@@ -46,8 +46,10 @@ public:
     void testXsltCopyNew();
 
     CPPUNIT_TEST_SUITE(XsltFilterTest);
+#if !( defined(MACOSX) && (MACOSX_SDK_VERSION < 1060) )
     CPPUNIT_TEST(testXsltCopyOld);
     CPPUNIT_TEST(testXsltCopyNew);
+#endif
     CPPUNIT_TEST_SUITE_END();
 };
 
diff --git a/sal/qa/osl/process/osl_process.cxx b/sal/qa/osl/process/osl_process.cxx
index 59bd74f..43ab660 100644
--- a/sal/qa/osl/process/osl_process.cxx
+++ b/sal/qa/osl/process/osl_process.cxx
@@ -469,8 +469,8 @@ public:
     }
 
     CPPUNIT_TEST_SUITE(Test_osl_executeProcess);
-    //TODO: Repair these (at least under Windows)
-#if !defined(WNT)
+    //TODO: Repair these
+#if !defined(WNT) && !(defined(MACOSX) && (MACOSX_SDK_VERSION < 1060))
     CPPUNIT_TEST(osl_execProc_parent_equals_child_environment);
     CPPUNIT_TEST(osl_execProc_merged_child_environment);
 #endif
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index 39b466f..3486d57 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -62,8 +62,8 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
     CppunitTest_sw_ooxmlfieldexport \
     CppunitTest_sw_ooxmlw14export \
     CppunitTest_sw_ooxmlimport \
-    CppunitTest_sw_ww8export \
-    CppunitTest_sw_ww8import \
+    $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),CppunitTest_sw_ww8export) \
+    $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),CppunitTest_sw_ww8import) \
     CppunitTest_sw_rtfexport \
     CppunitTest_sw_rtfimport \
     CppunitTest_sw_odfexport \
commit 490a72bb600be2c4c38103e79970f38a7a8cd6fa
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Tue Nov 3 11:00:37 2015 -0500

    unbind particular debugger from particular OS family
    
    Change-Id: Icd0fd27fdf47706b56676dd7ce6b9caf021cde60

diff --git a/solenv/gbuild/platform/unittest-failed-MACOSX.sh b/solenv/gbuild/platform/unittest-failed-MACOSX.sh
index 2a0ebab..f63847a 100755
--- a/solenv/gbuild/platform/unittest-failed-MACOSX.sh
+++ b/solenv/gbuild/platform/unittest-failed-MACOSX.sh
@@ -19,7 +19,8 @@
 cat << EOF
 
 Error: a unit test failed, please do one of:
-make $1Test_$2 CPPUNITTRACE="lldb --"       # for interactive debugging on OS X
+make $1Test_$2 CPPUNITTRACE="gdb --args"    # for interactive debugging with gdb
+make $1Test_$2 CPPUNITTRACE="lldb --"       # for interactive debugging with lldb
 make $1Test_$2 VALGRIND=memcheck            # for memory checking
 
 EOF
diff --git a/solenv/gbuild/platform/unittest-failed-default.sh b/solenv/gbuild/platform/unittest-failed-default.sh
index 5e6b40f..440ee35 100755
--- a/solenv/gbuild/platform/unittest-failed-default.sh
+++ b/solenv/gbuild/platform/unittest-failed-default.sh
@@ -20,7 +20,9 @@ cat << EOF
 
 Error: a unit test failed, please do one of:
 make $1Test_$2 CPPUNITTRACE="gdb --args"
-    # for interactive debugging on Linux
+    # for interactive debugging with gdb
+make $1Test_$2 CPPUNITTRACE="lldb --"
+    # for interactive debugging with lldb
 make $1Test_$2 VALGRIND=memcheck
     # for memory checking
 make $1Test_$2 DEBUGCPPUNIT=TRUE
commit 831e8b2bb0960efc7a8392b969a20c1732f4af2a
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Dec 11 00:38:12 2015 -0500

    fix scroll bars for OS X versions before 10.7 Lion
    
    with OS X 10.7 Apple changed the appearance and behavior of scroll bars
    
    this reverts commit 1af750ceed914cee01357fd83303df35b5b3dac8
    “NSAppKitVersionNumber is always greater than NSAppKitVersionNumber10_7”
    
    see also
      commit e8c467d134c1c49d2b25c72fbd45dd1c6b77b171
      fdo#46271 No arrows in scrollbars in OS X 10.7 and later
    
    Change-Id: I03e60d3442a85b39af88eebf0ba2cef1e9c2bf75

diff --git a/vcl/osx/salnativewidgets.cxx b/vcl/osx/salnativewidgets.cxx
index e9039e1..a5da070 100644
--- a/vcl/osx/salnativewidgets.cxx
+++ b/vcl/osx/salnativewidgets.cxx
@@ -36,6 +36,10 @@
 
 #include <cuidraw.hxx>
 
+#ifndef NSAppKitVersionNumber10_7
+#define NSAppKitVersionNumber10_7 1138
+#endif
+
 #if !HAVE_FEATURE_MACOSX_SANDBOX
 
 @interface NSWindow(CoreUIRendererPrivate)
@@ -126,29 +130,131 @@ static bool AquaGetScrollRect( /* TODO: int nScreen, */  ControlPart nPart,
     switch( nPart )
     {
         case PART_BUTTON_UP:
-            rResultRect.Bottom() = rResultRect.Top();
+            if (NSAppKitVersionNumber < NSAppKitVersionNumber10_7)
+            {
+                if( GetSalData()->mbIsScrollbarDoubleMax )
+                    rResultRect.Top() = rControlRect.Bottom() - 2*BUTTON_HEIGHT;
+                rResultRect.Bottom() = rResultRect.Top() + BUTTON_HEIGHT;
+            }
+            else
+            {
+                rResultRect.Bottom() = rResultRect.Top();
+            }
             break;
 
         case PART_BUTTON_DOWN:
-            rResultRect.Top() = rResultRect.Bottom();
+            if (NSAppKitVersionNumber < NSAppKitVersionNumber10_7)
+            {
+                rResultRect.Top() = rControlRect.Bottom() - BUTTON_HEIGHT;
+            }
+            else
+            {
+                rResultRect.Top() = rResultRect.Bottom();
+            }
             break;
 
         case PART_BUTTON_LEFT:
-            rResultRect.Right() = rResultRect.Left();
+            if (NSAppKitVersionNumber < NSAppKitVersionNumber10_7)
+            {
+                if( GetSalData()->mbIsScrollbarDoubleMax )
+                    rResultRect.Left() = rControlRect.Right() - 2*BUTTON_WIDTH;
+                rResultRect.Right() = rResultRect.Left() + BUTTON_WIDTH;
+            }
+            else
+            {
+                rResultRect.Right() = rResultRect.Left();
+            }
             break;
 
         case PART_BUTTON_RIGHT:
-            rResultRect.Left() = rResultRect.Right();
+            if (NSAppKitVersionNumber < NSAppKitVersionNumber10_7)
+            {
+                rResultRect.Left() = rControlRect.Right() - BUTTON_WIDTH;
+            }
+            else
+            {
+                rResultRect.Left() = rResultRect.Right();
+            }
             break;
 
         case PART_TRACK_HORZ_AREA:
+            if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_7)
+                break;
+            rResultRect.Right() -= BUTTON_WIDTH + 1;
+            if( GetSalData()->mbIsScrollbarDoubleMax )
+                rResultRect.Right() -= BUTTON_WIDTH;
+            else
+                rResultRect.Left() += BUTTON_WIDTH + 1;
+            break;
+
         case PART_TRACK_VERT_AREA:
+            if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_7)
+                break;
+            rResultRect.Bottom() -= BUTTON_HEIGHT + 1;
+            if( GetSalData()->mbIsScrollbarDoubleMax )
+                rResultRect.Bottom() -= BUTTON_HEIGHT;
+            else
+                rResultRect.Top() += BUTTON_HEIGHT + 1;
+            break;
         case PART_THUMB_HORZ:
+            if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_7)
+                break;
+            if( GetSalData()->mbIsScrollbarDoubleMax )
+            {
+                rResultRect.Left() += 8;
+                rResultRect.Right() += 6;
+            }
+            else
+            {
+                rResultRect.Left() += 4;
+                rResultRect.Right() += 4;
+            }
+            break;
         case PART_THUMB_VERT:
+            if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_7)
+                break;
+            if( GetSalData()->mbIsScrollbarDoubleMax )
+            {
+                rResultRect.Top() += 8;
+                rResultRect.Bottom() += 8;
+            }
+            else
+            {
+                rResultRect.Top() += 4;
+                rResultRect.Bottom() += 4;
+            }
+            break;
         case PART_TRACK_HORZ_LEFT:
+            if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_7)
+                break;
+            if( GetSalData()->mbIsScrollbarDoubleMax )
+                rResultRect.Right() += 8;
+            else
+                rResultRect.Right() += 4;
+            break;
         case PART_TRACK_HORZ_RIGHT:
+            if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_7)
+                break;
+            if( GetSalData()->mbIsScrollbarDoubleMax )
+                rResultRect.Left() += 6;
+            else
+                rResultRect.Left() += 4;
+            break;
         case PART_TRACK_VERT_UPPER:
+            if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_7)
+                break;
+            if( GetSalData()->mbIsScrollbarDoubleMax )
+                rResultRect.Bottom() += 8;
+            else
+                rResultRect.Bottom() += 4;
+            break;
         case PART_TRACK_VERT_LOWER:
+            if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_7)
+                break;
+            if( GetSalData()->mbIsScrollbarDoubleMax )
+                rResultRect.Top() += 8;
+            else
+                rResultRect.Top() += 4;
             break;
         default:
             bRetVal = false;
@@ -306,6 +412,27 @@ bool AquaSalGraphics::hitTestNativeControl( ControlType nType, ControlPart nPart
         Rectangle aRect;
         bool bValid = AquaGetScrollRect( /* TODO: m_nScreen */ nPart, rControlRegion, aRect );
         rIsInside = bValid && aRect.IsInside( rPos );
+        if( NSAppKitVersionNumber < NSAppKitVersionNumber10_7 &&
+            GetSalData()->mbIsScrollbarDoubleMax )
+        {
+            // in double max mode the actual trough is a little smaller than the track
+            // there is some visual filler that is not sensitive
+            if( bValid && rIsInside )
+            {
+                if( nPart == PART_TRACK_HORZ_AREA )
+                {
+                    // the left 4 pixels are not hit sensitive
+                    if( rPos.X() - aRect.Left() < 4 )
+                        rIsInside = false;
+                }
+                else if( nPart == PART_TRACK_VERT_AREA )
+                {
+                    // the top 4 pixels are not hit sensitive
+                    if( rPos.Y() - aRect.Top() < 4 )
+                        rIsInside = false;
+                }
+            }
+        }
         return bValid;
     }  //  CTRL_SCROLLBAR
 
commit 1a61646b09d362dcb80fee12c4fd8ae5478f816c
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Wed Oct 21 16:50:40 2015 -0400

    Fix “Guía problem”
    
    “Guía problem” is actually an unability (i.e. crash) to add new formula
    or to open existing file with formulas ...
    
    ... terminate called after throwing an instance of 'com::sun::star::uno::RuntimeException'
    program received signal SIGABRT, aborted
    b a c k t r a c e
     0  __kill
     1  abort
    ...
     5  __cxa_throw
     6  com::sun::star::uno::BaseReference::iquery_throw
     7  SfxObjectShell::SetupStorage
     8  SfxBaseModel::storeToStorage
     9  OCommonEmbeddedObject::StoreDocToStorage_Impl
    10  OCommonEmbeddedObject::storeAsEntry
    11  comphelper::EmbeddedObjectContainer::StoreEmbeddedObject
    12  comphelper::EmbeddedObjectContainer::InsertEmbeddedObject
    ...
    
    Fantastically enough that exception cannot be caught even with `catch (...)'
    
    What's interesting introduced by this patch
    
    • make ``uno::Reference< beans::XPropertySet > xProps( xStorage, uno::UNO_QUERY );''
      not to be a first line in SfxObjectShell::SetupStorage
    
    • add SAL_INFOs to know how the code flows
    
    • use `catch ( ... )' here and there
    
    • don't throw exceptions from OStorageHelper::GetXStorageFormat in the case when
      media type returned from xStorProps->getPropertyValue("MediaType") is empty
    
    • `return' instead of throwing an exception for the case when `!xStorage.is()'
      in OCommonEmbeddedObject::StoreDocToStorage_Impl
    
    Change-Id: I1241518a7ce87f68da71655f6f7f0a9ab9cb6bdb

diff --git a/comphelper/source/container/embeddedobjectcontainer.cxx b/comphelper/source/container/embeddedobjectcontainer.cxx
index b813b96..10df730 100644
--- a/comphelper/source/container/embeddedobjectcontainer.cxx
+++ b/comphelper/source/container/embeddedobjectcontainer.cxx
@@ -473,6 +473,8 @@ bool EmbeddedObjectContainer::StoreEmbeddedObject(
     const uno::Reference < embed::XEmbeddedObject >& xObj, OUString& rName, bool bCopy,
     const OUString& rSrcShellID, const OUString& rDestShellID )
 {
+    SAL_INFO( "comphelper.container", "entering >>EmbeddedObjectContainer::StoreEmbeddedObject<<" );
+
     uno::Reference < embed::XEmbedPersist > xPersist( xObj, uno::UNO_QUERY );
     if ( rName.isEmpty() )
         rName = CreateUniqueObjectName();
@@ -506,9 +508,9 @@ bool EmbeddedObjectContainer::StoreEmbeddedObject(
             }
         }
     }
-    catch (uno::Exception const& e)
+    catch ( uno::Exception const& ex )
     {
-        SAL_WARN("comphelper.container", "EmbeddedObjectContainer::StoreEmbeddedObject: exception caught: " << e.Message);
+        SAL_WARN( "comphelper.container", "EmbeddedObjectContainer::StoreEmbeddedObject: exception caught: " << ex.Message );
         // TODO/LATER: better error recovery should keep storage intact
         return false;
     }
@@ -518,6 +520,8 @@ bool EmbeddedObjectContainer::StoreEmbeddedObject(
 
 bool EmbeddedObjectContainer::InsertEmbeddedObject( const uno::Reference < embed::XEmbeddedObject >& xObj, OUString& rName )
 {
+    SAL_INFO( "comphelper.container", "entering >>bool EmbeddedObjectContainer::InsertEmbeddedObject( const uno::Reference < embed::XEmbeddedObject >& xObj, OUString& rName )<<" );
+
     // store it into the container storage
     if (StoreEmbeddedObject(xObj, rName, false, OUString(), OUString()))
     {
@@ -525,12 +529,14 @@ bool EmbeddedObjectContainer::InsertEmbeddedObject( const uno::Reference < embed
         AddEmbeddedObject( xObj, rName );
         return true;
     }
-    else
-        return false;
+
+    return false;
 }
 
 uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbeddedObject( const uno::Reference < io::XInputStream >& xStm, OUString& rNewName )
 {
+    SAL_INFO( "comphelper.container", "entering >>uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbeddedObject( const uno::Reference < io::XInputStream >& xStm, OUString& rNewName )<<" );
+
     if ( rNewName.isEmpty() )
         rNewName = CreateUniqueObjectName();
 
@@ -591,6 +597,8 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbedde
 
 uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >& aMedium, OUString& rNewName )
 {
+    SAL_INFO( "comphelper.container", "entering >>uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >& aMedium, OUString& rNewName )<<" );
+
     if ( rNewName.isEmpty() )
         rNewName = CreateUniqueObjectName();
 
diff --git a/comphelper/source/misc/storagehelper.cxx b/comphelper/source/misc/storagehelper.cxx
index bc83276..32354c0 100644
--- a/comphelper/source/misc/storagehelper.cxx
+++ b/comphelper/source/misc/storagehelper.cxx
@@ -230,11 +230,19 @@ sal_Int32 OStorageHelper::GetXStorageFormat(
             const uno::Reference< embed::XStorage >& xStorage )
         throw ( uno::Exception, std::exception )
 {
+    SAL_INFO( "comphelper.misc", "entering >>OStorageHelper::GetXStorageFormat<<" );
+
     uno::Reference< beans::XPropertySet > xStorProps( xStorage, uno::UNO_QUERY_THROW );
 
     OUString aMediaType;
     xStorProps->getPropertyValue("MediaType") >>= aMediaType;
 
+    if ( aMediaType.getLength() == 0 )
+    {
+        // media type is empty '' string
+        return SOFFICE_FILEFORMAT_CURRENT;
+    }
+
     sal_Int32 nResult = 0;
 
     // TODO/LATER: the filter configuration could be used to detect it later, or batter a special service
@@ -277,13 +285,18 @@ sal_Int32 OStorageHelper::GetXStorageFormat(
     else
     {
         // the mediatype is not known
-        OUString aMsg(BOOST_CURRENT_FUNCTION);
-        aMsg += ":";
-        aMsg += OUString::number(__LINE__);
-        aMsg += ": unknown media type '";
-        aMsg += aMediaType;
-        aMsg += "'";
-        throw beans::IllegalTypeException(aMsg);
+        OUString msg(BOOST_CURRENT_FUNCTION);
+        msg += ":";
+        msg += OUString::number(__LINE__);
+        //msg += ": unknown media type '";
+        //msg += aMediaType;
+        //msg += "'";
+        OString oMediaType = OUStringToOString( aMediaType, RTL_TEXTENCODING_ASCII_US );
+        SAL_INFO( "comphelper.misc",
+                  msg << ": unknown media type" <<
+                  " \'" << oMediaType.pData->buffer << "\'" );
+        // assume it fits to format which is used now
+        return SOFFICE_FILEFORMAT_CURRENT;
     }
 
     return nResult;
diff --git a/embeddedobj/source/commonembedding/persistence.cxx b/embeddedobj/source/commonembedding/persistence.cxx
index 5210712..fd0276d 100644
--- a/embeddedobj/source/commonembedding/persistence.cxx
+++ b/embeddedobj/source/commonembedding/persistence.cxx
@@ -754,10 +754,13 @@ void OCommonEmbeddedObject::StoreDocToStorage_Impl(
     const OUString& aHierarchName,
     bool bAttachToTheStorage )
 {
-    SAL_WARN_IF( !xStorage.is(), "embeddedobj.common", "No storage is provided for storing!" );
+    SAL_INFO( "embeddedobj.common", "entering >>OCommonEmbeddedObject::StoreDocToStorage_Impl<<" );
 
     if ( !xStorage.is() )
-        throw uno::RuntimeException(); // TODO:
+    {
+        SAL_WARN( "embeddedobj.common", "No storage is provided for storing" );
+        return; // just return enjoying the silence
+    }
 
     uno::Reference< document::XStorageBasedDocument > xDoc;
     {
@@ -792,7 +795,12 @@ void OCommonEmbeddedObject::StoreDocToStorage_Impl(
         aArgs[4].Name = "DestinationShellID";
         aArgs[4].Value <<= getStringPropertyValue(rObjArgs, "DestinationShellID");
 
-        xDoc->storeToStorage( xStorage, aArgs );
+        try
+        {
+            xDoc->storeToStorage( xStorage, aArgs );
+        }
+        catch ( ... ) { }
+
         if ( bAttachToTheStorage )
             SwitchDocToStorage_Impl( xDoc, xStorage );
     }
@@ -1162,6 +1170,8 @@ void SAL_CALL OCommonEmbeddedObject::storeToEntry( const uno::Reference< embed::
                 uno::Exception,
                 uno::RuntimeException, std::exception )
 {
+    SAL_INFO( "embeddedobj.common", "entering >>OCommonEmbeddedObject::storeToEntry<<" );
+
     ::osl::ResettableMutexGuard aGuard( m_aMutex );
     if ( m_bDisposed )
         throw lang::DisposedException(); // TODO
@@ -1293,6 +1303,8 @@ void SAL_CALL OCommonEmbeddedObject::storeAsEntry( const uno::Reference< embed::
                 uno::Exception,
                 uno::RuntimeException, std::exception )
 {
+    SAL_INFO( "embeddedobj.common", "entering >>OCommonEmbeddedObject::storeAsEntry<<" );
+
     // TODO: use lObjArgs
 
     ::osl::ResettableMutexGuard aGuard( m_aMutex );
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index 722630f..a588a3e 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -338,93 +338,96 @@ SotClipboardFormatId GetChartVersion( sal_Int32 nVersion, bool bTemplate )
 void SfxObjectShell::SetupStorage( const uno::Reference< embed::XStorage >& xStorage,
                                    sal_Int32 nVersion, bool bTemplate, bool bChart ) const
 {
-    uno::Reference< beans::XPropertySet > xProps( xStorage, uno::UNO_QUERY );
+    SAL_INFO( "sfx2.doc", "entering >>SfxObjectShell::SetupStorage<<" );
 
-    if ( xProps.is() )
-    {
-        SvGlobalName aName;
-        OUString aFullTypeName, aShortTypeName, aAppName;
-        SotClipboardFormatId nClipFormat = SotClipboardFormatId::NONE;
+    SvGlobalName aName;
+    OUString aFullTypeName, aShortTypeName, aAppName;
+    SotClipboardFormatId nClipFormat = SotClipboardFormatId::NONE;
 
-        if(!bChart)
-            FillClass( &aName, &nClipFormat, &aAppName, &aFullTypeName, &aShortTypeName, nVersion, bTemplate );
-        else
-            nClipFormat = GetChartVersion(nVersion, bTemplate);
+    if (!bChart)
+        FillClass( &aName, &nClipFormat, &aAppName, &aFullTypeName, &aShortTypeName, nVersion, bTemplate );
+    else
+        nClipFormat = GetChartVersion( nVersion, bTemplate );
 
-        if ( nClipFormat != SotClipboardFormatId::NONE )
+    if ( nClipFormat != SotClipboardFormatId::NONE )
+    {
+        // basic doesn't have a ClipFormat
+        // without MediaType the storage is not really usable, but currently the BasicIDE still
+        // is an SfxObjectShell and so we can't take this as an error
+        datatransfer::DataFlavor aDataFlavor;
+        SotExchange::GetFormatDataFlavor( nClipFormat, aDataFlavor );
+        if ( !aDataFlavor.MimeType.isEmpty() )
         {
-            // basic doesn't have a ClipFormat
-            // without MediaType the storage is not really usable, but currently the BasicIDE still
-            // is an SfxObjectShell and so we can't take this as an error
-            datatransfer::DataFlavor aDataFlavor;
-            SotExchange::GetFormatDataFlavor( nClipFormat, aDataFlavor );
-            if ( !aDataFlavor.MimeType.isEmpty() )
+            uno::Reference< beans::XPropertySet > xProps( xStorage, uno::UNO_QUERY );
+            if ( !xProps.is() ) return;
+
+            try
             {
-                try
-                {
-                    xProps->setPropertyValue("MediaType", uno::makeAny( aDataFlavor.MimeType ) );
-                }
-                catch( uno::Exception& )
-                {
-                    const_cast<SfxObjectShell*>( this )->SetError( ERRCODE_IO_GENERAL, OSL_LOG_PREFIX );
-                }
+                xProps->setPropertyValue("MediaType", uno::makeAny( aDataFlavor.MimeType ) );
+            }
+            catch( ... )
+            {
+                const_cast<SfxObjectShell*>( this )->SetError( ERRCODE_IO_GENERAL, OSL_LOG_PREFIX );
+            }
 
-                SvtSaveOptions::ODFDefaultVersion nDefVersion = SvtSaveOptions::ODFVER_012;
-                bool bUseSHA1InODF12 = false;
-                bool bUseBlowfishInODF12 = false;
+            SvtSaveOptions::ODFDefaultVersion nDefVersion = SvtSaveOptions::ODFVER_012;
+            bool bUseSHA1InODF12 = false;
+            bool bUseBlowfishInODF12 = false;
 
-                if (!utl::ConfigManager::IsAvoidConfig())
-                {
-                    SvtSaveOptions aSaveOpt;
-                    nDefVersion = aSaveOpt.GetODFDefaultVersion();
-                    bUseSHA1InODF12 = aSaveOpt.IsUseSHA1InODF12();
-                    bUseBlowfishInODF12 = aSaveOpt.IsUseBlowfishInODF12();
-                }
+            if (!utl::ConfigManager::IsAvoidConfig())
+            {
+                SvtSaveOptions aSaveOpt;
+                nDefVersion = aSaveOpt.GetODFDefaultVersion();
+                bUseSHA1InODF12 = aSaveOpt.IsUseSHA1InODF12();
+                bUseBlowfishInODF12 = aSaveOpt.IsUseBlowfishInODF12();
+            }
 
-                // the default values, that should be used for ODF1.1 and older formats
-                uno::Sequence< beans::NamedValue > aEncryptionAlgs
-                {
-                    { "StartKeyGenerationAlgorithm", css::uno::makeAny(xml::crypto::DigestID::SHA1) },
-                    { "EncryptionAlgorithm", css::uno::makeAny(xml::crypto::CipherID::BLOWFISH_CFB_8) },
-                    { "ChecksumAlgorithm", css::uno::makeAny(xml::crypto::DigestID::SHA1_1K) }
-                };
+            // the default values, that should be used for ODF1.1 and older formats
+            uno::Sequence< beans::NamedValue > aEncryptionAlgs
+            {
+                { "StartKeyGenerationAlgorithm", css::uno::makeAny(xml::crypto::DigestID::SHA1) },
+                { "EncryptionAlgorithm", css::uno::makeAny(xml::crypto::CipherID::BLOWFISH_CFB_8) },
+                { "ChecksumAlgorithm", css::uno::makeAny(xml::crypto::DigestID::SHA1_1K) }
+            };
 
-                if ( nDefVersion >= SvtSaveOptions::ODFVER_012 )
+            if ( nDefVersion >= SvtSaveOptions::ODFVER_012 )
+            {
+                try
                 {
-                    try
-                    {
-                        // older versions can not have this property set, it exists only starting from ODF1.2
-                        xProps->setPropertyValue("Version", uno::makeAny<OUString>( ODFVER_012_TEXT ) );
-                    }
-                    catch( uno::Exception& )
-                    {
-                    }
-
-                    if ( !bUseSHA1InODF12 && nDefVersion != SvtSaveOptions::ODFVER_012_EXT_COMPAT )
-                    {
-                        aEncryptionAlgs[0].Value <<= xml::crypto::DigestID::SHA256;
-                        aEncryptionAlgs[2].Value <<= xml::crypto::DigestID::SHA256_1K;
-                    }
-                    if ( !bUseBlowfishInODF12 && nDefVersion != SvtSaveOptions::ODFVER_012_EXT_COMPAT )
-                        aEncryptionAlgs[1].Value <<= xml::crypto::CipherID::AES_CBC_W3C_PADDING;
+                    // older versions can not have this property set, it exists only starting from ODF1.2
+                    xProps->setPropertyValue("Version", uno::makeAny<OUString>( ODFVER_012_TEXT ) );
                 }
-
-                try
+                catch( ... )
                 {
-                    // set the encryption algorithms accordingly;
-                    // the setting does not trigger encryption,
-                    // it just provides the format for the case that contents should be encrypted
-                    uno::Reference< embed::XEncryptionProtectedStorage > xEncr( xStorage, uno::UNO_QUERY_THROW );
-                    xEncr->setEncryptionAlgorithms( aEncryptionAlgs );
                 }
-                catch( uno::Exception& )
+
+                if ( !bUseSHA1InODF12 && nDefVersion != SvtSaveOptions::ODFVER_012_EXT_COMPAT )
                 {
-                    const_cast<SfxObjectShell*>( this )->SetError( ERRCODE_IO_GENERAL, OSL_LOG_PREFIX );
+                    aEncryptionAlgs[0].Value <<= xml::crypto::DigestID::SHA256;
+                    aEncryptionAlgs[2].Value <<= xml::crypto::DigestID::SHA256_1K;
                 }
+                if ( !bUseBlowfishInODF12 && nDefVersion != SvtSaveOptions::ODFVER_012_EXT_COMPAT )
+                    aEncryptionAlgs[1].Value <<= xml::crypto::CipherID::AES_CBC_W3C_PADDING;
+            }
 
+            try
+            {
+                // set the encryption algorithms accordingly;
+                // the setting does not trigger encryption,
+                // it just provides the format for the case that contents should be encrypted
+                uno::Reference< embed::XEncryptionProtectedStorage > xEncr( xStorage, uno::UNO_QUERY_THROW );
+                xEncr->setEncryptionAlgorithms( aEncryptionAlgs );
+            }
+            catch( ... )
+            {
+                const_cast<SfxObjectShell*>( this )->SetError( ERRCODE_IO_GENERAL, OSL_LOG_PREFIX );
             }
+
         }
     }
+
+    //SAL_INFO( "sfx2.doc", "leaving >>SfxObjectShell::SetupStorage<<" );
+    return;
 }
 
 
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index 56ae242..4093232 100644
--- a/sfx2/source/doc/sfxbasemodel.cxx
+++ b/sfx2/source/doc/sfxbasemodel.cxx
@@ -3756,6 +3756,8 @@ void SAL_CALL SfxBaseModel::storeToStorage( const Reference< embed::XStorage >&
             Exception,
             RuntimeException, std::exception )
 {
+    SAL_INFO( "sfx2.doc", "entering >>SfxBaseModel::storeToStorage<<" );
+
     SfxModelGuard aGuard( *this );
 
     Reference< embed::XStorage > xResult;
@@ -3782,11 +3784,13 @@ void SAL_CALL SfxBaseModel::storeToStorage( const Reference< embed::XStorage >&
         // storing to the own storage
         bSuccess = m_pData->m_pObjectShell->DoSave();
     }
-    else
+    else /* xStorage != m_pData->m_pObjectShell->GetStorage() */
     {
         // TODO/LATER: if the provided storage has some data inside the storing might fail, probably the storage must be truncated
         // TODO/LATER: is it possible to have a template here?
-        m_pData->m_pObjectShell->SetupStorage( xStorage, nVersion, false );
+        try {
+            m_pData->m_pObjectShell->SetupStorage( xStorage, nVersion, false );
+        } catch ( ... ) { }
 
         // BaseURL is part of the ItemSet
         SfxMedium aMedium( xStorage, OUString(), &aSet );
@@ -3807,8 +3811,8 @@ void SAL_CALL SfxBaseModel::storeToStorage( const Reference< embed::XStorage >&
     {
         nError = nError ? nError : ERRCODE_IO_GENERAL;
         throw task::ErrorCodeIOException(
-            "SfxBaseModel::storeToStorage: 0x" + OUString::number(nError, 16),
-            Reference< XInterface >(), nError);
+            "SfxBaseModel::storeToStorage: $" + OUString::number(nError, 16),
+            Reference< XInterface >(), nError );
     }
 }
 
commit 4fdfa2ab6a0e233330e6548a4b6b6d5a6064849b
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Fri Dec 11 02:06:37 2015 -0500

    select gcc3_linux_powerpc UNO bridge for Mac OS X too
    
    related commit 5d7bd6b9299946ea2cc5760c5fd2338b3ec4a902
    
    Change-Id: I61db3e2a63358826881f9f1add0daef3aa4c09b1

diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk
index 3206a53..95af32c 100644
--- a/bridges/Library_cpp_uno.mk
+++ b/bridges/Library_cpp_uno.mk
@@ -114,7 +114,7 @@ endif
 
 else ifeq ($(CPUNAME),POWERPC)
 
-ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD MACOSX,$(OS)),)
 bridges_SELECTED_BRIDGE := gcc3_linux_powerpc
 bridge_noopt_objects := uno2cpp
 bridge_exception_objects := cpp2uno except
@@ -126,7 +126,7 @@ endif
 
 else ifeq ($(CPUNAME),POWERPC64)
 
-ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD MACOSX,$(OS)),)
 bridges_SELECTED_BRIDGE := gcc3_linux_powerpc64
 bridge_noopt_objects := cpp2uno uno2cpp
 bridge_exception_objects := except
diff --git a/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx b/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
index 19fe4e7..617ccd3 100644
--- a/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
+++ b/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
@@ -30,7 +30,7 @@
 
 /*See: http://people.redhat.com/drepper/selinux-mem.html*/
 #if defined(LINUX) || defined(OPENBSD) || defined(FREEBSD) \
-    || defined(NETBSD) || defined(DRAGONFLY) || defined (ANDROID)
+    || defined(NETBSD) || defined(MACOSX) || defined(DRAGONFLY) || defined (ANDROID)
 #define USE_DOUBLE_MMAP
 #endif
 
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx
index 69a590c..eab4090 100644
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc/cpp2uno.cxx
@@ -526,47 +526,89 @@ static void cpp_vtable_call( int nFunctionIndex, int nVtableOffset, void** gpreg
 
                 case typelib_TypeClass_BOOLEAN:
                 case typelib_TypeClass_BYTE:
+                #if defined(MACOSX)
+                  __asm__( "lbz r3,%0\n\t" : :
+               "m"(nRegReturn[0]) );
+                #else
                   __asm__( "lbz 3,%0\n\t" : :
                "m"(nRegReturn[0]) );
+                #endif
                   break;
 
                 case typelib_TypeClass_CHAR:
                 case typelib_TypeClass_SHORT:
                 case typelib_TypeClass_UNSIGNED_SHORT:
+                #if defined(MACOSX)
+                  __asm__( "lhz r3,%0\n\t" : :
+               "m"(nRegReturn[0]) );
+                #else
                   __asm__( "lhz 3,%0\n\t" : :
                "m"(nRegReturn[0]) );
+                #endif
                   break;
 
         case typelib_TypeClass_FLOAT:
 #ifndef __NO_FPRS__
+                #if defined(MACOSX)
+                  __asm__( "lfs f1,%0\n\t" : :
+                           "m" (*((float*)nRegReturn)) );
+                #else
                   __asm__( "lfs 1,%0\n\t" : :
                            "m" (*((float*)nRegReturn)) );
+                #endif
  #else
+                #if defined(MACOSX)
+                  __asm__( "lwz r3,%0\n\t" : :
+                           "m"(nRegReturn[0]) );
+                #else
                   __asm__( "lwz 3,%0\n\t" : :
                            "m"(nRegReturn[0]) );
+                #endif
 #endif
           break;
 
         case typelib_TypeClass_DOUBLE:
 #ifndef __NO_FPRS__
+        #if defined(MACOSX)
+          __asm__( "lfd f1,%0\n\t" : :
+                           "m" (*((double*)nRegReturn)) );
+        #else
           __asm__( "lfd 1,%0\n\t" : :
                            "m" (*((double*)nRegReturn)) );
+        #endif
 #else
+        #if defined(MACOSX)
+          __asm__( "lwz r3,%0\n\t" : :
+                           "m"(nRegReturn[0]) );
+          __asm__( "lwz r4,%0\n\t" : :
+                           "m"(nRegReturn[1]) );
+        #else
           __asm__( "lwz 3,%0\n\t" : :
                            "m"(nRegReturn[0]) );
           __asm__( "lwz 4,%0\n\t" : :
                            "m"(nRegReturn[1]) );
+        #endif
 #endif
           break;
 
         case typelib_TypeClass_HYPER:
         case typelib_TypeClass_UNSIGNED_HYPER:
+        #if defined(MACOSX)
+          __asm__( "lwz r4,%0\n\t" : :
+                           "m"(nRegReturn[1]) );  // fall through
+        #else
           __asm__( "lwz 4,%0\n\t" : :
                            "m"(nRegReturn[1]) );  // fall through
+        #endif
 
         default:
+        #if defined(MACOSX)
+          __asm__( "lwz r3,%0\n\t" : :
+                           "m"(nRegReturn[0]) );
+        #else
           __asm__( "lwz 3,%0\n\t" : :
                            "m"(nRegReturn[0]) );
+        #endif
           break;
     }
 }
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx
index 6b26bcd..1c35085 100644
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc/uno2cpp.cxx
@@ -18,7 +18,11 @@
  */
 
 
+#if defined(MACOSX)
+#include <sys/malloc.h>
+#else
 #include <malloc.h>
+#endif
 
 #include <com/sun/star/uno/genfunc.hxx>
 #include <uno/data.h>
@@ -88,6 +92,16 @@ static void callVirtualMethod(
 
      // this grows the current stack to the appropriate size
      // and sets the outgoing stack pointer p to the right place
+   #if defined(MACOSX)
+     __asm__ __volatile__ (
+          "rlwinm %0,%0,3,3,28\n\t"
+          "addi %0,%0,22\n\t"
+          "rlwinm %0,%0,0,4,28\n\t"
+          "lwz r0,0(r1)\n\t"
+          "subf r1,%0,r1\n\t"
+          "stw r0,0(r1)\n\t"
+          : : "r" (nStackLongs) : "0" );
+   #else
      __asm__ __volatile__ (
           "rlwinm %0,%0,3,3,28\n\t"
           "addi %0,%0,22\n\t"
@@ -96,8 +110,13 @@ static void callVirtualMethod(
           "subf 1,%0,1\n\t"
           "stw 0,0(1)\n\t"
           : : "r" (nStackLongs) : "0" );
+   #endif
 
+   #if defined(MACOSX)
+     __asm__ __volatile__ ( "addi %0,r1,8" : "=r" (p) : );
+   #else
      __asm__ __volatile__ ( "addi %0,1,8" : "=r" (p) : );
+   #endif
 
      // never called
      // if (! pAdjustedThisPtr ) dummy_can_throw_anything("xxx"); // address something
@@ -237,6 +256,16 @@ static void callVirtualMethod(
     /* Set up the machine registers and invoke the function */
 
     __asm__ __volatile__ (
+      #if defined(MACOSX)
+        "lwz    r3,  0(%0)\n\t"
+        "lwz    r4,  4(%0)\n\t"
+        "lwz    r5,  8(%0)\n\t"
+        "lwz    r6,  12(%0)\n\t"
+        "lwz    r7,  16(%0)\n\t"
+        "lwz    r8,  20(%0)\n\t"
+        "lwz    r9,  24(%0)\n\t"
+        "lwz    r10, 28(%0)\n\t"
+      #else
         "lwz    3,  0(%0)\n\t"
         "lwz    4,  4(%0)\n\t"
         "lwz    5,  8(%0)\n\t"
@@ -245,7 +274,18 @@ static void callVirtualMethod(
         "lwz    8,  20(%0)\n\t"
         "lwz    9,  24(%0)\n\t"
         "lwz    10, 28(%0)\n\t"
+      #endif
 #ifndef __NO_FPRS__
+      #if defined(MACOSX)
+        "lfd    f1,  0(%1)\n\t"
+        "lfd    f2,  8(%1)\n\t"
+        "lfd    f3,  16(%1)\n\t"
+        "lfd    f4,  24(%1)\n\t"
+        "lfd    f5,  32(%1)\n\t"
+        "lfd    f6,  40(%1)\n\t"
+        "lfd    f7,  48(%1)\n\t"
+        "lfd    f8,  56(%1)\n\t"
+      #else
         "lfd    1,  0(%1)\n\t"
         "lfd    2,  8(%1)\n\t"
         "lfd    3,  16(%1)\n\t"
@@ -254,6 +294,7 @@ static void callVirtualMethod(
         "lfd    6,  40(%1)\n\t"
         "lfd    7,  48(%1)\n\t"
         "lfd    8,  56(%1)\n\t"
+      #endif
             : : "r" (gpr), "r" (fpr)
 #else
             : : "r" (gpr)
@@ -274,10 +315,19 @@ static void callVirtualMethod(
     (*ptr)(r3, r4, r5, r6, r7, r8, r9, r10);
 
     __asm__ __volatile__ (
+      #if defined(MACOSX)
+       "mr     %0,     r3\n\t"
+       "mr     %1,     r4\n\t"
+      #else
        "mr     %0,     3\n\t"
        "mr     %1,     4\n\t"
+      #endif
 #ifndef __NO_FPRS__
+      #if defined(MACOSX)
+       "fmr    %2,     f1\n\t"
+      #else
        "fmr    %2,     1\n\t"
+      #endif
        : "=r" (iret), "=r" (iret2), "=f" (dret)
 #else
        : "=r" (iret), "=r" (iret2)
commit 408a9319ebe75ecc8075f18539cdc5ba2e485d69
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Thu Oct 15 11:00:00 2015 -0400

    [UNO~C++] [WiP] try to fix UNO bridge for gcc3_macosx_powerpc part

diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx
index 81bae49f..556e87c 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx
@@ -49,7 +49,7 @@ static typelib_TypeClass cpp2uno_call(
 
         // gpreg:  [ret *], this, [gpr params]
         // fpreg:  [fpr params]
-        // ovrflw: [gpr or fpr params (properly aligned)]
+        // ovrflw: [gpr or fpr params (space for entire parameter list aligned)]
 
     // return
     typelib_TypeDescription * pReturnTypeDescr = 0;
@@ -83,11 +83,14 @@ static typelib_TypeClass cpp2uno_call(
 
     // stack space
     assert( sizeof(void *) == sizeof(sal_Int32) && "### unexpected size!" );
+
     // parameters
     void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
     void ** pCppArgs = pUnoArgs + nParams;
+
     // indices of values this have to be converted (interface conversion cpp<=>uno)
     sal_Int32 * pTempIndices = (sal_Int32 *)(pUnoArgs + (2 * nParams));
+
     // type descriptions for reconversions
     typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
 
@@ -102,7 +105,6 @@ static typelib_TypeClass cpp2uno_call(
         if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
                 // value
         {
-
             switch (pParamTypeDescr->eTypeClass)
             {
 
@@ -524,8 +526,8 @@ static void cpp_vtable_call( int nFunctionIndex, int nVtableOffset, void** gpreg
 
 int const codeSnippetSize = 136;
 
-unsigned char *  codeSnippet( unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset,
-                              bool simpleRetType)
+unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex,
+                  sal_Int32 vtableOffset, bool simpleRetType )
 {
 
   // fprintf(stderr,"in codeSnippet functionIndex is %x\n", functionIndex);
@@ -679,8 +681,9 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
     typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
     sal_Int32 functionCount, sal_Int32 vtableOffset)
 {
-     (*slots) -= functionCount;
-     Slot * s = *slots;
+    (*slots) -= functionCount;
+    Slot * s = *slots;
+
   // fprintf(stderr, "in addLocalFunctions functionOffset is %x\n",functionOffset);
   // fprintf(stderr, "in addLocalFunctions vtableOffset is %x\n",vtableOffset);
   // fflush(stderr);
diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx.previous b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx.previous
index 7fb88fe..b2d22f0 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx.previous
+++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx.previous
@@ -46,7 +46,7 @@ static typelib_TypeClass cpp2uno_call(
 
         // gpreg:  [ret *], this, [gpr params]
         // fpreg:  [fpr params]
-        // ovrflw: [gpr or fpr params (space for entire parameter list in structure format properly aligned)]
+        // ovrflw: [gpr or fpr params (space for entire parameter list aligned)]
 
     // return
     typelib_TypeDescription * pReturnTypeDescr = 0;
@@ -59,11 +59,13 @@ static typelib_TypeClass cpp2uno_call(
     sal_Int32 ngpreg = 0;
     sal_Int32 nfpreg = 0;
 
-
+    // handle optional return pointer
     if (pReturnTypeDescr)
     {
         if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
+        {
             pUnoReturn = pRegisterReturn; // direct way for simple types
+        }
         else // complex return via ptr (pCppReturn)
         {
             pCppReturn = *gpreg;
@@ -141,19 +143,19 @@ static typelib_TypeClass cpp2uno_call(
     pCppStack = (char *)ovrflw;
 
     // stack space
-    OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
+    assert( sizeof(void *) == sizeof(sal_Int32) && "### unexpected size!" );
 
     // parameters
     void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
     void ** pCppArgs = pUnoArgs + nParams;
 
-    // indizes of values this have to be converted (interface conversion cpp<=>uno)
-    sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams));
+    // indices of values this have to be converted (interface conversion cpp<=>uno)
+    sal_Int32 * pTempIndices = (sal_Int32 *)(pUnoArgs + (2 * nParams));
 
     // type descriptions for reconversions
     typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
 
-    sal_Int32 nTempIndizes   = 0;
+    sal_Int32 nTempIndices   = 0;
 
     for ( nPos = 0; nPos < nParams; ++nPos )
     {
@@ -199,9 +201,9 @@ static typelib_TypeClass cpp2uno_call(
             {
                 // uno out is unconstructed mem!
                 pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize );
-                pTempIndizes[nTempIndizes] = nPos;
+                pTempIndices[nTempIndices] = nPos;
                 // will be released at reconversion
-                ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+                ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
             }
             // is in/inout
             else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
@@ -209,9 +211,9 @@ static typelib_TypeClass cpp2uno_call(
                 uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ),
                                         *(void **)pCppStack, pParamTypeDescr,
                                         pThis->getBridge()->getCpp2Uno() );
-                pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
+                pTempIndices[nTempIndices] = nPos; // has to be reconverted
                 // will be released at reconversion
-                ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+                ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
             }
             else // direct way
             {
@@ -223,26 +225,24 @@ static typelib_TypeClass cpp2uno_call(
         pCppStack += sizeof(sal_Int32); // standard parameter length
     }
 
-
     // ExceptionHolder
     uno_Any aUnoExc; // Any will be constructed by callee
     uno_Any * pUnoExc = &aUnoExc;
 
     // invoke uno dispatch call
-    (*pThis->getUnoI()->pDispatcher)(
-         pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
+    (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
 
     // in case an exception occurred...
     if (pUnoExc)
     {
         // destruct temporary in/inout params
-        for ( ; nTempIndizes--; )
+        for ( ; nTempIndices--; )
         {
-            sal_Int32 nIndex = pTempIndizes[nTempIndizes];
+            sal_Int32 nIndex = pTempIndices[nTempIndices];
 
             if (pParams[nIndex].bIn) // is in/inout => was constructed
-                uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 );
-            TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
+                uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndices], 0 );
+            TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndices] );
         }
         if (pReturnTypeDescr)
             TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
@@ -256,10 +256,10 @@ static typelib_TypeClass cpp2uno_call(
     else // else no exception occurred...
     {
         // temporary params
-        for ( ; nTempIndizes--; )
+        for ( ; nTempIndices--; )
         {
-            sal_Int32 nIndex = pTempIndizes[nTempIndizes];
-            typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
+            sal_Int32 nIndex = pTempIndices[nTempIndices];
+            typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndices];
 
             if (pParams[nIndex].bOut) // inout/out
             {
@@ -305,7 +305,7 @@ static typelib_TypeClass cpp_mediate(
         void ** gpreg, void ** fpreg, void ** ovrflw,
     sal_Int64 * pRegisterReturn /* space for register return */ )
 {
-    OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" );
+    assert( sizeof(sal_Int32)==sizeof(void *) && "### unexpected!" );
 
     // gpreg:  [ret *], this, [other gpr params]
     // fpreg:  [fpr params]
@@ -329,7 +329,7 @@ static typelib_TypeClass cpp_mediate(
 
     typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr();
 
-    OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" );
+    assert( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex && "### illegal vtable index!" );
     if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex)
     {
         throw RuntimeException(
@@ -339,7 +339,7 @@ static typelib_TypeClass cpp_mediate(
 
     // determine called method
     sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
-    OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" );
+    assert( nMemberPos < pTypeDescr->nAllMembers && "### illegal member index!" );
 
     TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] );
 
@@ -516,7 +516,7 @@ unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex,
     if (! simpleRetType )
         functionIndex |= 0x80000000;
 
-    // OSL_ASSERT( sizeof (long) == 4 );
+    // assert( sizeof (long) == 4 );
 
     // FIXME: why are we leaving an 8k gap in the stack here
     // FIXME: is this to allow room for signal handling frames?
@@ -652,7 +652,8 @@ sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize(
 
 bridges::cpp_uno::shared::VtableFactory::Slot *
 bridges::cpp_uno::shared::VtableFactory::initializeBlock(
-    void * block, sal_Int32 slotCount)
+    void * block, sal_Int32 slotCount, sal_Int32,
+    typelib_InterfaceTypeDescription *)
 {
     Slot * slots = mapBlockToVtable(block);
     slots[-2].fn = 0;
@@ -675,7 +676,7 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
     for (sal_Int32 i = 0; i < type->nMembers; ++i) {
         typelib_TypeDescription * member = 0;
         TYPELIB_DANGER_GET(&member, type->ppMembers[i]);
-        OSL_ASSERT(member != 0);
+        assert(member != 0);
         switch (member->eTypeClass) {
         case typelib_TypeClass_INTERFACE_ATTRIBUTE:
             // Getter:
@@ -708,7 +709,7 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
             break;
 
         default:
-            OSL_ASSERT(false);
+            assert(false);
             break;
         }
         TYPELIB_DANGER_RELEASE(member);
diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx
index 9c09999..b0a4e3f 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx
@@ -303,7 +303,7 @@ static void callVirtualMethod(
 
 static void cpp_call(
     bridges::cpp_uno::shared::UnoInterfaceProxy * pThis,
-    bridges::cpp_uno::shared::VtableSlot  aVtableSlot,
+    bridges::cpp_uno::shared::VtableSlot aVtableSlot,
     typelib_TypeDescriptionReference * pReturnTypeRef,
     sal_Int32 nParams, typelib_MethodParameter * pParams,
     void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc )
@@ -320,7 +320,7 @@ static void cpp_call(
     // return
     typelib_TypeDescription * pReturnTypeDescr = 0;
     TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
-    // assert( pReturnTypeDescr && "### expected return type description!" );
+    //assert( pReturnTypeDescr && "### expected return type description!" );
 
     void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion
 
@@ -341,13 +341,13 @@ static void cpp_call(
         }
     }
     // push this
-        void* pAdjustedThisPtr = reinterpret_cast< void **>(pThis->getCppI()) + aVtableSlot.offset;
+    void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI()) + aVtableSlot.offset;
     *(void**)pCppStack = pAdjustedThisPtr;
     pCppStack += sizeof( void* );
         *pPT++ = 'I';
 
     // stack space
-    // assert( sizeof(void *) == sizeof(sal_Int32) && "### unexpected size!" );
+    //assert( sizeof(void *) == sizeof(sal_Int32) && "### unexpected size!" );
     // args
     void ** pCppArgs  = (void **)alloca( 3 * sizeof(void *) * nParams );
     // indices of values this have to be converted (interface conversion cpp<=>uno)
@@ -430,8 +430,7 @@ static void cpp_call(
             {
                 uno_copyAndConvertData(
                     *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
-                    pUnoArgs[nPos], pParamTypeDescr,
-                                        pThis->getBridge()->getUno2Cpp() );
+                    pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() );
 
                 pTempIndices[nTempIndices] = nPos; // has to be reconverted
                 // will be released at reconversion
@@ -499,8 +498,7 @@ static void cpp_call(
      catch (...)
      {
           // fill uno exception
-        fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions,
-                                  *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
+        fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
 
         // temporary params
         for ( ; nTempIndices--; )
@@ -525,8 +523,8 @@ void unoInterfaceProxyDispatch(
     void * pReturn, void * pArgs[], uno_Any ** ppException )
 {
     // is my surrogate
-        bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
-            = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy *> (pUnoI);
+    bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
+            = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * > (pUnoI);
 
     switch (pMemberDescr->eTypeClass)
     {
diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx.previous b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx.previous
index 0f5e0bc..67435c0 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx.previous
+++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx.previous
@@ -38,7 +38,7 @@ using namespace ::com::sun::star::uno;
 namespace
 {
 
-//==================================================================================================
+
 static void callVirtualMethod(
     void * pAdjustedThisPtr,
     sal_Int32 nVtableIndex,
@@ -77,9 +77,6 @@ static void callVirtualMethod(
      // Note: This keeps us from having to decode the signature twice and
      // prevents problems with later local variables.
 
-     // FIXME: I do not believe the following is true but we will keep the
-     // FIXME: extra space just to be safe until proven otherwise
-
      // Note: could require up to  2*nStackLongs words of parameter stack area
      // if the call has many float parameters (i.e. floats take up only 1
      // word on the stack but take 2 words in parameter area in the
@@ -267,16 +264,16 @@ static void callVirtualMethod(
         case typelib_TypeClass_CHAR:
         case typelib_TypeClass_SHORT:
         case typelib_TypeClass_UNSIGNED_SHORT:
-                *(unsigned short*)pRegisterReturn = (unsigned short)iret;
+            *(unsigned short*)pRegisterReturn = (unsigned short)iret;
             break;
 
         case typelib_TypeClass_BOOLEAN:
         case typelib_TypeClass_BYTE:
-                *(unsigned char*)pRegisterReturn = (unsigned char)iret;
+            *(unsigned char*)pRegisterReturn = (unsigned char)iret;
             break;
 
         case typelib_TypeClass_FLOAT:
-                *(float*)pRegisterReturn = (float)dret;
+            *(float*)pRegisterReturn = (float)dret;
             break;
 
         case typelib_TypeClass_DOUBLE:
@@ -288,7 +285,6 @@ static void callVirtualMethod(
 }
 
 
-//==================================================================================================
 static void cpp_call(
     bridges::cpp_uno::shared::UnoInterfaceProxy * pThis,
     bridges::cpp_uno::shared::VtableSlot aVtableSlot,
@@ -308,7 +304,7 @@ static void cpp_call(
     // return
     typelib_TypeDescription * pReturnTypeDescr = 0;
     TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
-    OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" );
+    //assert( pReturnTypeDescr && "### expected return type description!" );
 
     void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion
 
@@ -330,22 +326,21 @@ static void cpp_call(
         }
     }
     // push this
-        void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI())
-      + aVtableSlot.offset;
+    void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI()) + aVtableSlot.offset;
     *(void**)pCppStack = pAdjustedThisPtr;
     pCppStack += sizeof( void* );
         *pPT++ = 'I';
 
     // stack space
-    OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
+    //assert( sizeof(void *) == sizeof(sal_Int32) && "### unexpected size!" );
     // args
     void ** pCppArgs  = (void **)alloca( 3 * sizeof(void *) * nParams );
-    // indizes of values this have to be converted (interface conversion cpp<=>uno)
-    sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams);
+    // indices of values this have to be converted (interface conversion cpp<=>uno)
+    sal_Int32 * pTempIndices = (sal_Int32 *)(pCppArgs + nParams);
     // type descriptions for reconversions
     typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams));
 
-    sal_Int32 nTempIndizes   = 0;
+    sal_Int32 nTempIndices   = 0;
 
     for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
     {
@@ -353,8 +348,7 @@ static void cpp_call(
         typelib_TypeDescription * pParamTypeDescr = 0;
         TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
 
-        if (!rParam.bOut
-                    && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
+        if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
         {
             uno_copyAndConvertData( pCppArgs[nPos] = pCppStack, pUnoArgs[nPos], pParamTypeDescr,
                                     pThis->getBridge()->getUno2Cpp() );
@@ -412,9 +406,9 @@ static void cpp_call(
                 uno_constructData(
                     *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
                     pParamTypeDescr );
-                pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call
+                pTempIndices[nTempIndices] = nPos; // default constructed for cpp call
                 // will be released at reconversion
-                ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+                ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
             }
             // is in/inout
             else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
@@ -423,9 +417,9 @@ static void cpp_call(
                     *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
                     pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() );
 
-                pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
+                pTempIndices[nTempIndices] = nPos; // has to be reconverted
                 // will be released at reconversion
-                ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+                ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
             }
             else // direct way
             {
@@ -444,7 +438,7 @@ static void cpp_call(
 
     try
     {
-        OSL_ENSURE( !( (pCppStack - pCppStackStart ) & 3), "UNALIGNED STACK !!! (Please DO panic)" );
+        assert( !( (pCppStack - pCppStackStart ) & 3) && "UNALIGNED STACK !!! (Please DO panic)" );
         callVirtualMethod(
             pAdjustedThisPtr, aVtableSlot.index,
             pCppReturn, pReturnTypeDescr->eTypeClass, pParamType,
@@ -453,10 +447,10 @@ static void cpp_call(
         *ppUnoExc = 0;
 
         // reconvert temporary params
-        for ( ; nTempIndizes--; )
+        for ( ; nTempIndices--; )
         {
-            sal_Int32 nIndex = pTempIndizes[nTempIndizes];
-            typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
+            sal_Int32 nIndex = pTempIndices[nTempIndices];
+            typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndices];
 
             if (pParams[nIndex].bIn)
             {
@@ -491,12 +485,12 @@ static void cpp_call(
         fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
 
         // temporary params
-        for ( ; nTempIndizes--; )
+        for ( ; nTempIndices--; )
         {
-            sal_Int32 nIndex = pTempIndizes[nTempIndizes];
+            sal_Int32 nIndex = pTempIndices[nTempIndices];
             // destroy temp cpp param => cpp: every param was constructed
-            uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release );
-            TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
+            uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndices], cpp_release );
+            TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndices] );
         }
         // return type
         if (pReturnTypeDescr)
@@ -514,8 +508,7 @@ void unoInterfaceProxyDispatch(
 {
     // is my surrogate
     bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
-           = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * > (pUnoI);
-        //  typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr;
+            = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * > (pUnoI);
 
     switch (pMemberDescr->eTypeClass)
     {
commit ab606d7f24f2ce3ab8b0d3da13f0e04575972dfd
Author: Douglas Mencken <dougmencken at gmail.com>
Date:   Thu Oct 15 10:46:53 2015 -0400

    [UNO~C++] restore vintage versions of cpp2uno.cxx and uno2cpp.cxx
    
    ... from famous commit 7aa6f1b01481c1d0f1a12f56ad197c797056c37b

diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx.previous b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx.previous
new file mode 100644
index 0000000..7fb88fe
--- /dev/null
+++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx.previous
@@ -0,0 +1,719 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   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 .
+ */
+
+
+#include <com/sun/star/uno/genfunc.hxx>
+#include <uno/data.h>
+#include <typelib/typedescription.hxx>
+
+#include "bridges/cpp_uno/shared/bridge.hxx"
+#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx"
+#include "bridges/cpp_uno/shared/types.hxx"
+#include "bridges/cpp_uno/shared/vtablefactory.hxx"
+
+#include "share.hxx"
+
+using namespace ::com::sun::star::uno;
+
+namespace
+{
+
+//==================================================================================================
+static typelib_TypeClass cpp2uno_call(
+    bridges::cpp_uno::shared::CppInterfaceProxy * pThis,
+    const typelib_TypeDescription * pMemberTypeDescr,
+    typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return
+    sal_Int32 nParams, typelib_MethodParameter * pParams,
+        void ** gpreg, void ** fpreg, void ** ovrflw,
+    sal_Int64 * pRegisterReturn /* space for register return */ )
+{
+
+        // gpreg:  [ret *], this, [gpr params]
+        // fpreg:  [fpr params]
+        // ovrflw: [gpr or fpr params (space for entire parameter list in structure format properly aligned)]
+
+    // return
+    typelib_TypeDescription * pReturnTypeDescr = 0;
+    if (pReturnTypeRef)
+        TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
+
+    void * pUnoReturn = 0;
+    void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need
+
+    sal_Int32 ngpreg = 0;
+    sal_Int32 nfpreg = 0;
+
+
+    if (pReturnTypeDescr)
+    {
+        if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
+            pUnoReturn = pRegisterReturn; // direct way for simple types
+        else // complex return via ptr (pCppReturn)
+        {
+            pCppReturn = *gpreg;
+            ngpreg++;
+            ++ovrflw;
+
+            pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )
+                          ? alloca( pReturnTypeDescr->nSize )
+                          : pCppReturn); // direct way
+        }
+    }
+    // pop this
+    ngpreg++;
+    ++ovrflw;
+
+        // after handling optional return pointer and "this"
+        // make use of the space that is allocated to store all parameters in the callers stack
+        // by comying the proper registers filled with parameters to that space
+    char * pCppStack = (char *)ovrflw;
+
+
+    sal_Int32 nPos;
+
+    for ( nPos = 0; nPos < nParams; ++nPos )
+    {
+        const typelib_MethodParameter & rParam = pParams[nPos];
+        if (rParam.bOut)
+        {
+            if (ngpreg < 8)
+            {
+                *(sal_Int32 *)pCppStack = ((sal_Int32 *)gpreg)[ngpreg++];
+            }
+            pCppStack += sizeof (sal_Int32);
+        }
+        else
+        {
+        switch (rParam.pTypeRef->eTypeClass)
+        {
+        case typelib_TypeClass_FLOAT:
+            if (nfpreg < 13)
+            {
+                *(float *)pCppStack = ((double *)fpreg)[nfpreg++];
+            }
+            pCppStack += sizeof (float);
+            ngpreg += 1;
+            break;
+        case typelib_TypeClass_DOUBLE:
+            if (nfpreg < 13)
+            {
+                *(double *)pCppStack = ((double *)fpreg)[nfpreg++];
+            }
+            pCppStack += sizeof (double);
+            ngpreg += 2;
+            break;
+        case typelib_TypeClass_UNSIGNED_HYPER:
+        case typelib_TypeClass_HYPER:
+            if (ngpreg < 8)
+            {
+                *(sal_Int32 *)pCppStack = ((sal_Int32 *)gpreg)[ngpreg++];
+            }
+            pCppStack += sizeof (sal_Int32);
+                        // fall through on purpose
+        default:
+            if (ngpreg < 8)
+            {
+                *(sal_Int32 *)pCppStack = ((sal_Int32 *)gpreg)[ngpreg++];
+            }
+            pCppStack += sizeof (sal_Int32);
+        }
+        }
+    }
+
+        // now the stack has all of the parameters stored in it ready to be processed
+        // so we are ready to build the uno call stack
+    pCppStack = (char *)ovrflw;
+
+    // stack space
+    OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
+
+    // parameters
+    void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
+    void ** pCppArgs = pUnoArgs + nParams;
+
+    // indizes of values this have to be converted (interface conversion cpp<=>uno)
+    sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams));
+
+    // type descriptions for reconversions
+    typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
+
+    sal_Int32 nTempIndizes   = 0;
+
+    for ( nPos = 0; nPos < nParams; ++nPos )
+    {
+        const typelib_MethodParameter & rParam = pParams[nPos];
+        typelib_TypeDescription * pParamTypeDescr = 0;
+        TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
+
+        if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
+                // value
+        {
+            switch (pParamTypeDescr->eTypeClass)
+            {
+            case typelib_TypeClass_BOOLEAN:
+            case typelib_TypeClass_BYTE:
+                pCppArgs[nPos] = pCppStack +3;
+                pUnoArgs[nPos] = pCppStack +3;
+                break;
+            case typelib_TypeClass_CHAR:
+            case typelib_TypeClass_SHORT:
+            case typelib_TypeClass_UNSIGNED_SHORT:
+                pCppArgs[nPos] = pCppStack +2;
+                pUnoArgs[nPos] = pCppStack +2;
+                break;
+            case typelib_TypeClass_HYPER:
+            case typelib_TypeClass_UNSIGNED_HYPER:
+            case typelib_TypeClass_DOUBLE:
+                pCppArgs[nPos] = pCppStack;
+                pUnoArgs[nPos] = pCppStack;
+                pCppStack += sizeof(sal_Int32); // extra long (two regs)
+                break;
+            default:
+                pCppArgs[nPos] = pCppStack;
+                pUnoArgs[nPos] = pCppStack;
+            }
+            // no longer needed
+            TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+        }
+        else // ptr to complex value | ref
+        {
+            pCppArgs[nPos] = *(void **)pCppStack;
+
+            if (! rParam.bIn) // is pure out
+            {
+                // uno out is unconstructed mem!
+                pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize );
+                pTempIndizes[nTempIndizes] = nPos;
+                // will be released at reconversion
+                ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+            }
+            // is in/inout
+            else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
+            {
+                uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ),
+                                        *(void **)pCppStack, pParamTypeDescr,
+                                        pThis->getBridge()->getCpp2Uno() );
+                pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
+                // will be released at reconversion
+                ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+            }
+            else // direct way
+            {
+                pUnoArgs[nPos] = *(void **)pCppStack;
+                // no longer needed
+                TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+            }
+        }
+        pCppStack += sizeof(sal_Int32); // standard parameter length
+    }
+
+
+    // ExceptionHolder
+    uno_Any aUnoExc; // Any will be constructed by callee
+    uno_Any * pUnoExc = &aUnoExc;
+
+    // invoke uno dispatch call
+    (*pThis->getUnoI()->pDispatcher)(
+         pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
+
+    // in case an exception occurred...
+    if (pUnoExc)
+    {
+        // destruct temporary in/inout params
+        for ( ; nTempIndizes--; )
+        {
+            sal_Int32 nIndex = pTempIndizes[nTempIndizes];
+
+            if (pParams[nIndex].bIn) // is in/inout => was constructed
+                uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 );
+            TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
+        }
+        if (pReturnTypeDescr)
+            TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
+
+        CPPU_CURRENT_NAMESPACE::raiseException(
+                    &aUnoExc, pThis->getBridge()->getUno2Cpp() );
+                // has to destruct the any
+        // is here for dummy
+        return typelib_TypeClass_VOID;
+    }
+    else // else no exception occurred...
+    {
+        // temporary params
+        for ( ; nTempIndizes--; )
+        {
+            sal_Int32 nIndex = pTempIndizes[nTempIndizes];
+            typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
+
+            if (pParams[nIndex].bOut) // inout/out
+            {
+                // convert and assign
+                uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
+                uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr,
+                                        pThis->getBridge()->getUno2Cpp() );
+            }
+            // destroy temp uno param
+            uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 );
+
+            TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+        }
+        // return
+        if (pCppReturn) // has complex return
+        {
+            if (pUnoReturn != pCppReturn) // needs reconversion
+            {
+                uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr,
+                                        pThis->getBridge()->getUno2Cpp() );
+                // destroy temp uno return
+                uno_destructData( pUnoReturn, pReturnTypeDescr, 0 );
+            }
+            // complex return ptr is set to return reg
+            *(void **)pRegisterReturn = pCppReturn;
+        }
+        if (pReturnTypeDescr)
+        {
+            typelib_TypeClass eRet = (typelib_TypeClass)pReturnTypeDescr->eTypeClass;
+            TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
+            return eRet;
+        }
+        else
+            return typelib_TypeClass_VOID;
+    }
+}
+
+
+//==================================================================================================
+static typelib_TypeClass cpp_mediate(
+    sal_Int32 nFunctionIndex,
+        sal_Int32 nVtableOffset,
+        void ** gpreg, void ** fpreg, void ** ovrflw,
+    sal_Int64 * pRegisterReturn /* space for register return */ )
+{
+    OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" );
+
+    // gpreg:  [ret *], this, [other gpr params]
+    // fpreg:  [fpr params]
+    // ovrflw: [gpr or fpr params (in space allocated for all params properly aligned)]
+
+        void * pThis;
+    if( nFunctionIndex & 0x80000000 )
+    {
+        nFunctionIndex &= 0x7fffffff;
+        pThis = gpreg[1];
+    }
+    else
+        {
+        pThis = gpreg[0];
+        }
+
+        pThis = static_cast< char * >(pThis) - nVtableOffset;
+        bridges::cpp_uno::shared::CppInterfaceProxy * pCppI
+    = bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy(pThis);
+
+
+    typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr();
+
+    OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" );
+    if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex)
+    {
+        throw RuntimeException(
+            rtl::OUString( "illegal vtable index!" ),
+            (XInterface *)pThis );
+    }
+
+    // determine called method
+    sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
+    OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" );
+
+    TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] );
+
+    typelib_TypeClass eRet;
+    switch (aMemberDescr.get()->eTypeClass)
+    {
+    case typelib_TypeClass_INTERFACE_ATTRIBUTE:
+    {
+        if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex)
+        {
+            // is GET method
+            eRet = cpp2uno_call(
+                pCppI, aMemberDescr.get(),
+                ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef,
+                0, 0, // no params
+                gpreg, fpreg, ovrflw, pRegisterReturn );
+        }
+        else
+        {
+            // is SET method
+            typelib_MethodParameter aParam;
+            aParam.pTypeRef =
+                ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef;
+            aParam.bIn      = sal_True;
+            aParam.bOut     = sal_False;
+
+            eRet = cpp2uno_call(
+                pCppI, aMemberDescr.get(),
+                0, // indicates void return
+                1, &aParam,
+                gpreg, fpreg, ovrflw, pRegisterReturn );
+        }
+        break;
+    }
+    case typelib_TypeClass_INTERFACE_METHOD:
+    {
+        // is METHOD
+        switch (nFunctionIndex)
+        {
+        case 1: // acquire()
+            pCppI->acquireProxy(); // non virtual call!
+            eRet = typelib_TypeClass_VOID;
+            break;
+        case 2: // release()
+            pCppI->releaseProxy(); // non virtual call!
+            eRet = typelib_TypeClass_VOID;
+            break;
+        case 0: // queryInterface() opt
+        {
+            typelib_TypeDescription * pTD = 0;
+            TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( gpreg[2] )->getTypeLibType() );
+            if (pTD)
+            {
+                XInterface * pInterface = 0;
+                (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)(
+                    pCppI->getBridge()->getCppEnv(),
+                    (void **)&pInterface, pCppI->getOid().pData, (typelib_InterfaceTypeDescription *)pTD );
+
+                if (pInterface)
+                {
+                    ::uno_any_construct(
+                        reinterpret_cast< uno_Any * >( gpreg[0] ),
+                        &pInterface, pTD, cpp_acquire );
+                    pInterface->release();
+                    TYPELIB_DANGER_RELEASE( pTD );
+                    *(void **)pRegisterReturn = gpreg[0];
+                    eRet = typelib_TypeClass_ANY;
+                    break;
+                }
+                TYPELIB_DANGER_RELEASE( pTD );
+            }
+        } // else perform queryInterface()
+        default:
+            eRet = cpp2uno_call(
+                pCppI, aMemberDescr.get(),
+                ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef,
+                ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams,
+                ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams,
+                gpreg, fpreg, ovrflw, pRegisterReturn );
+        }
+        break;
+    }
+    default:
+    {
+        throw RuntimeException(
+            rtl::OUString( "no member description found!" ),
+            (XInterface *)pThis );
+    }
+    }
+
+    return eRet;
+}
+
+//==================================================================================================
+/**
+ * is called on incoming vtable calls
+ * (called by asm snippets)
+ */
+static void cpp_vtable_call( int nFunctionIndex, int nVtableOffset, void** gpregptr, void** fpregptr, void** ovrflw)
+{
+        sal_Int32     gpreg[8];
+        double        fpreg[13];
+
+        // FIXME: why are we restoring the volatile ctr register here
+    sal_Int32   ctrsave = ((sal_Int32*)gpregptr)[-1];
+
+        memcpy( gpreg, gpregptr, 32);
+        memcpy( fpreg, fpregptr, 104);
+
+    volatile long nRegReturn[2];
+
+        // sal_Bool bComplex = nFunctionIndex & 0x80000000 ? sal_True : sal_False;
+
+    typelib_TypeClass aType =
+             cpp_mediate( nFunctionIndex, nVtableOffset, (void**)gpreg, (void**)fpreg, ovrflw, (sal_Int64*)nRegReturn );
+
+        // FIXME: why are we restoring the volatile ctr register here
+        // FIXME: and why are we putting back the values for r4, r5, and r6 as well
+        // FIXME: this makes no sense to me, all of these registers are volatile!
+    __asm__( "lwz r4, %0\n\t"
+        "mtctr r4\n\t"
+        "lwz r4, %1\n\t"
+        "lwz r5, %2\n\t"
+        "lwz r6, %3\n\t"
+         : : "m"(ctrsave), "m"(gpreg[1]), "m"(gpreg[2]), "m"(gpreg[3]) );
+
+    switch( aType )
+    {
+
+                // move return value into register space
+                // (will be loaded by machine code snippet)
+
+                case typelib_TypeClass_BOOLEAN:
+                case typelib_TypeClass_BYTE:
+                  __asm__( "lbz r3,%0\n\t" : :
+               "m"(nRegReturn[0]) );
+                  break;
+
+                case typelib_TypeClass_CHAR:
+                case typelib_TypeClass_SHORT:
+                case typelib_TypeClass_UNSIGNED_SHORT:
+                  __asm__( "lhz r3,%0\n\t" : :
+               "m"(nRegReturn[0]) );
+                  break;
+
+        case typelib_TypeClass_FLOAT:
+                  __asm__( "lfs f1,%0\n\t" : :
+                           "m" (*((float*)nRegReturn)) );
+          break;
+
+        case typelib_TypeClass_DOUBLE:
+          __asm__( "lfd f1,%0\n\t" : :
+                           "m" (*((double*)nRegReturn)) );
+          break;
+
+        case typelib_TypeClass_HYPER:
+        case typelib_TypeClass_UNSIGNED_HYPER:
+          __asm__( "lwz r4,%0\n\t" : :
+                           "m"(nRegReturn[1]) );  // fall through
+
+        default:
+          __asm__( "lwz r3,%0\n\t" : :
+                           "m"(nRegReturn[0]) );
+          break;
+    }
+}
+
+
+int const codeSnippetSize = 136;
+
+unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex,
+                  sal_Int32 vtableOffset, bool simpleRetType )
+{
+    if (! simpleRetType )
+        functionIndex |= 0x80000000;
+
+    // OSL_ASSERT( sizeof (long) == 4 );
+
+    // FIXME: why are we leaving an 8k gap in the stack here
+    // FIXME: is this to allow room for signal handling frames?
+    // FIXME: seems like overkill here but this is what was done for Mac OSX for gcc2
+    // FIXME: also why no saving of the non-volatile CR pieces here, to be safe
+    // FIXME: we probably should
+
+    /* generate this code */
+
+    // # so first save gpr 3 to gpr 10 (aligned to 4)
+    //  stw   r3, -8000(r1)
+    //  stw   r4, -7996(r1)
+    //  stw   r5, -7992(r1)
+    //  stw   r6, -7988(r1)
+    //  stw   r7, -7984(r1)
+    //  stw   r8, -7980(r1)
+    //  stw   r9, -7976(r1)
+    //  stw   r10,-7972(r1)
+
+    // # next save fpr 1 to fpr 13 (aligned to 8)
+    //  stfd  f1, -7968(r1)
+    //  stfd  f2, -7960(r1)
+    //  stfd  f3, -7952(r1)
+    //  stfd  f4, -7944(r1)
+    //  stfd  f5, -7936(r1)
+    //  stfd  f6, -7928(r1)
+    //  stfd  f7, -7920(r1)
+    //  stfd  f8, -7912(r1)
+    //  stfd  f9, -7904(r1)
+    //  stfd  f10,-7896(r1)
+    //  stfd  f11,-7888(r1)
+    //  stfd  f12,-7880(r1)
+    //  stfd  f13,-7872(r1)
+
+    // FIXME: ctr is volatile, while are we saving it and not CR?
+    // mfctr r3
+    // stw r3, -8004(r1)
+
+    // # now here is where cpp_vtable_call must go
+    // lis r3,0xdead
+    // ori r3,r3,0xbeef
+    // mtctr r3
+
+    // # now load up the functionIndex number
+    // lis r3, 0xdead
+    // ori r3,r3,0xbeef
+
+    // # now load up the vtableOffset
+    // lis r4, 0xdead
+    // ori r4,r4,0xbeef
+
+    // #now load up the pointer to the saved gpr registers
+    // addi r5,r1,-8000
+
+    // #now load up the pointer to the saved fpr registers
+    // addi r6,r1,-7968
+
+    // #now load up the pointer to the overflow call stack
+    // addi r7,r1,24 # frame pointer plus 24
+
+    // bctr
+
+    unsigned long * p = (unsigned long *) code;
+
+    * p++ = 0x9061e0c0;
+    * p++ = 0x9081e0c4;
+    * p++ = 0x90a1e0c8;
+    * p++ = 0x90c1e0cc;
+    * p++ = 0x90e1e0d0;
+    * p++ = 0x9101e0d4;
+    * p++ = 0x9121e0d8;
+    * p++ = 0x9141e0dc;
+    * p++ = 0xd821e0e0;
+    * p++ = 0xd841e0e8;
+    * p++ = 0xd861e0f0;
+    * p++ = 0xd881e0f8;
+    * p++ = 0xd8a1e100;
+    * p++ = 0xd8c1e108;
+    * p++ = 0xd8e1e110;
+    * p++ = 0xd901e118;
+    * p++ = 0xd921e120;
+    * p++ = 0xd941e128;
+    * p++ = 0xd961e130;
+    * p++ = 0xd981e138;
+    * p++ = 0xd9a1e140;
+    * p++ = 0x7c6902a6;
+    * p++ = 0x9061e0bc;
+    * p++ = 0x3c600000 | (((unsigned long)cpp_vtable_call) >> 16);
+    * p++ = 0x60630000 | (((unsigned long)cpp_vtable_call) & 0x0000FFFF);
+    * p++ = 0x7c6903a6;
+    * p++ = 0x3c600000 | (((unsigned long)functionIndex) >> 16);
+    * p++ = 0x60630000 | (((unsigned long)functionIndex) & 0x0000FFFF);
+    * p++ = 0x3c800000 | (((unsigned long)vtableOffset) >> 16);
+    * p++ = 0x60840000 | (((unsigned long)vtableOffset) & 0x0000FFFF);
+    * p++ = 0x38a1e0c0;
+    * p++ = 0x38c1e0e0;
+    * p++ = 0x38e10018;
+    * p++ = 0x4e800420;
+
+    return (code + codeSnippetSize);
+
+}
+
+
+}
+
+void bridges::cpp_uno::shared::VtableFactory::flushCode(unsigned char const * bptr, unsigned char const * eptr)
+{
+    int const lineSize = 32;
+    for (unsigned char const * p = bptr; p < eptr + lineSize; p += lineSize) {
+        __asm__ volatile ("dcbst 0, %0" : : "r"(p) : "memory");
+    }
+    __asm__ volatile ("sync" : : : "memory");
+    for (unsigned char const * p = bptr; p < eptr + lineSize; p += lineSize) {
+        __asm__ volatile ("icbi 0, %0" : : "r"(p) : "memory");
+    }
+    __asm__ volatile ("isync" : : : "memory");
+}
+
+struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; };
+
+bridges::cpp_uno::shared::VtableFactory::Slot *
+bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
+{
+    return static_cast< Slot * >(block) + 2;
+}
+
+sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize(
+    sal_Int32 slotCount)
+{
+    return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize;
+}
+
+bridges::cpp_uno::shared::VtableFactory::Slot *
+bridges::cpp_uno::shared::VtableFactory::initializeBlock(
+    void * block, sal_Int32 slotCount)
+{
+    Slot * slots = mapBlockToVtable(block);
+    slots[-2].fn = 0;
+    slots[-1].fn = 0;
+    return slots + slotCount;
+}
+
+unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
+    Slot ** slots, unsigned char * code,
+    typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
+    sal_Int32 functionCount, sal_Int32 vtableOffset)
+{
+    (*slots) -= functionCount;
+    Slot * s = *slots;
+
+  // fprintf(stderr, "in addLocalFunctions functionOffset is %x\n",functionOffset);
+  // fprintf(stderr, "in addLocalFunctions vtableOffset is %x\n",vtableOffset);
+  // fflush(stderr);
+
+    for (sal_Int32 i = 0; i < type->nMembers; ++i) {
+        typelib_TypeDescription * member = 0;
+        TYPELIB_DANGER_GET(&member, type->ppMembers[i]);
+        OSL_ASSERT(member != 0);
+        switch (member->eTypeClass) {
+        case typelib_TypeClass_INTERFACE_ATTRIBUTE:
+            // Getter:
+            (s++)->fn = code;
+            code = codeSnippet(
+                code, functionOffset++, vtableOffset,
+                bridges::cpp_uno::shared::isSimpleType(
+                    reinterpret_cast<
+                    typelib_InterfaceAttributeTypeDescription * >(
+                        member)->pAttributeTypeRef));
+
+            // Setter:
+            if (!reinterpret_cast<
+                typelib_InterfaceAttributeTypeDescription * >(
+                    member)->bReadOnly)
+            {
+                (s++)->fn = code;
+                code = codeSnippet(code, functionOffset++, vtableOffset, true);
+            }
+            break;
+
+        case typelib_TypeClass_INTERFACE_METHOD:
+            (s++)->fn = code;
+            code = codeSnippet(
+                code, functionOffset++, vtableOffset,
+                bridges::cpp_uno::shared::isSimpleType(
+                    reinterpret_cast<
+                    typelib_InterfaceMethodTypeDescription * >(
+                        member)->pReturnTypeRef));
+            break;
+
+        default:
+            OSL_ASSERT(false);
+            break;
+        }
+        TYPELIB_DANGER_RELEASE(member);
+    }
+    return code;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx.previous b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx.previous
new file mode 100644
index 0000000..0f5e0bc
--- /dev/null
+++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx.previous
@@ -0,0 +1,636 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   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 .
+ */
+
+
+#include <sys/types.h>
+#include <sys/malloc.h>
+
+#include <com/sun/star/uno/genfunc.hxx>
+#include <uno/data.h>
+
+#include "bridges/cpp_uno/shared/bridge.hxx"
+#include "bridges/cpp_uno/shared/types.hxx"
+#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx"
+#include "bridges/cpp_uno/shared/vtables.hxx"
+
+#include "share.hxx"
+
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+
+namespace
+{
+
+//==================================================================================================
+static void callVirtualMethod(
+    void * pAdjustedThisPtr,
+    sal_Int32 nVtableIndex,
+    void * pRegisterReturn,
+    typelib_TypeClass eReturnType,
+    char * pPT,
+    sal_Int32 * pStackLongs,
+    sal_Int32 /* nStackLongs */)
+{
+
+  // parameter list is mixed list of * and values
+  // reference parameters are pointers
+
+  // the basic idea here is to use gpr[8] as a storage area for
+  // the future values of registers r3 to r10 needed for the call,

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list