[Libreoffice-commits] core.git: pyuno/source sal/osl

Stephan Bergmann sbergman at redhat.com
Tue Nov 25 14:29:07 PST 2014


 pyuno/source/module/pyuno_module.cxx |    5 -----
 sal/osl/unx/process_impl.cxx         |   21 ++++-----------------
 sal/osl/w32/process.cxx              |   15 ++++++---------
 3 files changed, 10 insertions(+), 31 deletions(-)

New commits:
commit 2ad716f406e0fdb9b9294876c64ae92fecbf5e27
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Nov 25 23:22:13 2014 +0100

    Revert "pyuno: set up fake command line in getComponentContext()"
    
    This reverts commit 2386a92c1e6e8ec263edb4dc4fdcfeaa4673ce1f and its follow-ups
    1acaa577b67158c060d2f57414f7aea86504a489 "sal: add special handling of argc==0
    to osl_setCommandArgs()" and 01f27b5e5d428cc3c4aeabdcbbb8204494fbd435 "sal: fix
    osl_setCommandArgs() on WNT."
    
    The situation that osl_getCommandArgCount is called without a prior call to
    osl_setCommandArgs should be considered as harmless and can legitimately not
    only happen in the pyuno case discussed in the reverted commits, but also in
    case binary UNO is bootstrapped from within a Java process, as happens in
    test-javanative in ure/source/uretest/Makefile.
    
    Change-Id: I2829db390e37dfe5daeda33a4c0659b7d35e565a

diff --git a/pyuno/source/module/pyuno_module.cxx b/pyuno/source/module/pyuno_module.cxx
index e7ebb73..c2ca67b 100644
--- a/pyuno/source/module/pyuno_module.cxx
+++ b/pyuno/source/module/pyuno_module.cxx
@@ -27,7 +27,6 @@
 
 #include <osl/module.hxx>
 #include <osl/thread.h>
-#include <osl/process.h>
 #include <osl/file.hxx>
 
 #include <typelib/typedescription.hxx>
@@ -250,10 +249,6 @@ static PyObject* getComponentContext(
         }
         else
         {
-            // cppu::defaultBootstrap_InitialComponentContext expects
-            // command line arguments to be present
-            osl_setCommandArgs(0, 0); // fake it
-
             OUString iniFile;
             if( path.isEmpty() )
             {
diff --git a/sal/osl/unx/process_impl.cxx b/sal/osl/unx/process_impl.cxx
index 56c4925..3942f14 100644
--- a/sal/osl/unx/process_impl.cxx
+++ b/sal/osl/unx/process_impl.cxx
@@ -164,7 +164,7 @@ sal_uInt32 SAL_CALL osl_getCommandArgCount (void)
     sal_uInt32 result = 0;
 
     pthread_mutex_lock (&(g_command_args.m_mutex));
-    assert (g_command_args.m_nCount != 0);
+    SAL_WARN_IF (g_command_args.m_nCount == 0, "sal.osl", "osl_setCommandArgs() not called before calling osl_getCommandArgCount()");
     if (g_command_args.m_nCount > 0)
         result = g_command_args.m_nCount - 1;
     pthread_mutex_unlock (&(g_command_args.m_mutex));
@@ -204,26 +204,13 @@ int SAL_CALL osl_areCommandArgsSet (void)
  **************************************/
 void SAL_CALL osl_setCommandArgs (int argc, char ** argv)
 {
-    // special case for argc == 0: set up fake command line
-    int nArgs(argc ? argc : 1);
+    OSL_ASSERT(argc > 0);
     pthread_mutex_lock (&(g_command_args.m_mutex));
     assert (g_command_args.m_nCount == 0);
     if (g_command_args.m_nCount == 0)
     {
-        rtl_uString** ppArgs =
-            (rtl_uString**)rtl_allocateZeroMemory(nArgs * sizeof(rtl_uString*));
-        if (ppArgs != 0 && argc == 0)
-        {
-            // special case: set up fake command line
-            char const*const arg =
-                "this is just a fake and cheap imitation of a command line";
-            rtl_string2UString(&ppArgs[0],
-                arg, rtl_str_getLength(arg), RTL_TEXTENCODING_ASCII_US,
-                OSTRING_TO_OUSTRING_CVTFLAGS);
-            g_command_args.m_nCount = nArgs;
-            g_command_args.m_ppArgs = ppArgs;
-        }
-        else if (ppArgs != 0)
+        rtl_uString** ppArgs = (rtl_uString**)rtl_allocateZeroMemory (argc * sizeof(rtl_uString*));
+        if (ppArgs != 0)
         {
             rtl_TextEncoding encoding = osl_getThreadTextEncoding();
             for (int i = 0; i < argc; i++)
diff --git a/sal/osl/w32/process.cxx b/sal/osl/w32/process.cxx
index 786e299..6db821b 100644
--- a/sal/osl/w32/process.cxx
+++ b/sal/osl/w32/process.cxx
@@ -259,20 +259,16 @@ static struct CommandArgs_Impl g_command_args =
 #pragma warning( push )
 #pragma warning( disable: 4100 )
 #endif
-static rtl_uString ** osl_createCommandArgs_Impl (int & argc, char **)
+static rtl_uString ** osl_createCommandArgs_Impl (int argc, char **)
 {
-    int nArgs(0);
-    LPWSTR *wargv = CommandLineToArgvW( GetCommandLineW(), &nArgs );
-    if (argc != nArgs)
-    {
-        assert(argc == 0 /* special case - faked */);
-        argc = nArgs;
-    }
     rtl_uString ** ppArgs =
-        (rtl_uString**)rtl_allocateZeroMemory(nArgs * sizeof(rtl_uString*));
+        (rtl_uString**)rtl_allocateZeroMemory (argc * sizeof(rtl_uString*));
     if (ppArgs != 0)
     {
         int i;
+        int nArgs;
+        LPWSTR *wargv = CommandLineToArgvW( GetCommandLineW(), &nArgs );
+        OSL_ASSERT( nArgs == argc );
         for (i = 0; i < nArgs; i++)
         {
             /* Convert to unicode */
@@ -385,6 +381,7 @@ int SAL_CALL osl_areCommandArgsSet(void)
 
 void SAL_CALL osl_setCommandArgs (int argc, char ** argv)
 {
+    OSL_ASSERT(argc > 0);
     osl_acquireMutex (*osl_getGlobalMutex());
     if (g_command_args.m_nCount == 0)
     {


More information about the Libreoffice-commits mailing list