diff options
authorPetr Mladek <>2011-01-13 21:13:19 +0100
committerPetr Mladek <>2011-01-14 19:24:27 +0100
commit2c2774f3a20f35f9f5320efa9e7d1f37bb860266 (patch)
parent8539854f9af2c423d69ab9a89c79d3dbb8c6abd3 (diff)
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
1 files changed, 6 insertions, 2 deletions
diff --git a/desktop/source/deployment/manager/dp_extensionmanager.cxx b/desktop/source/deployment/manager/dp_extensionmanager.cxx
index c6529ec0e8..11b38cdc88 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();
- dp_misc::getIdentifier(xNewExtension),
- xNewExtension->getName(), bUserDisabled2, false, xAbortChannel,
+ sNewExtensionIdentifier, sNewExtensionFileName,
+ bUserDisabled2, false, xAbortChannel,