[Libreoffice-commits] .: Branch 'libreoffice-3-3-0' - desktop/source

Petr Mladek pmladek at kemper.freedesktop.org
Fri Jan 14 10:27:05 PST 2011


 desktop/source/deployment/manager/dp_extensionmanager.cxx |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

New commits:
commit 57746f255004ef42fc87c3ad3d30a4cb47a0111b
Author: Petr Mladek <pmladek at suse.cz>
Date:   Thu Jan 13 21:13:19 2011 +0100

    unopkg crasher on SLED11-SP1 (bnc#655912)
    
    activateExtension call broke memory if dp_misc::getIdentifier and xNewExtension
    were called inline; the problem was visible only with gcc-4.3.4 and did not
    appear with older or newer gcc versions
    
    valgrind got happy and unopkg stopped crashing after the values were passed via
    the extra variables
    
    it looks like a miscompilation; IMHO, it does not make sense to report it
    because it does not happen with last gcc version
    
    this code is not critical for the performance, so the workaround with
    extra variables is fine; they might even be optimized out by the compiler
    
    Signed off by Michael, Noel, Tor

diff --git a/desktop/source/deployment/manager/dp_extensionmanager.cxx b/desktop/source/deployment/manager/dp_extensionmanager.cxx
index c6529ec..11b38cd 100644
--- a/desktop/source/deployment/manager/dp_extensionmanager.cxx
+++ b/desktop/source/deployment/manager/dp_extensionmanager.cxx
@@ -740,9 +740,13 @@ Reference<deploy::XPackage> ExtensionManager::addExtension(
                     if (repository.equals(OUSTR("user")))
                         bUserDisabled2 = false;
 
+                    // pass the two values via variables to workaround gcc-4.3.4 specific bug (bnc#655912)
+                    OUString sNewExtensionIdentifier = dp_misc::getIdentifier(xNewExtension);
+                    OUString sNewExtensionFileName = xNewExtension->getName();
+
                     activateExtension(
-                        dp_misc::getIdentifier(xNewExtension),
-                        xNewExtension->getName(), bUserDisabled2, false, xAbortChannel,
+                        sNewExtensionIdentifier, sNewExtensionFileName,
+                        bUserDisabled2, false, xAbortChannel,
                         Reference<ucb::XCommandEnvironment>());
                 }
                 else


More information about the Libreoffice-commits mailing list