Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates-src > by-pkgid > cd8ce32c919af60229fca1d7f792c60e > files > 59

openoffice.org-3.2.0-12.35.fc13.src.rpm

# HG changeset patch
# Parent b682cbb775c33b3969bce1d52e4b0164b42c1bb6
#i114409# prevent deref. of dangling ptr if there is no other instance of SvtSysLocale hanging around somewhere

diff -r b682cbb775c3 sw/source/core/bastyp/calc.cxx
--- a/sw/source/core/bastyp/calc.cxx	Tue Aug 17 14:47:10 2010 +0200
+++ b/sw/source/core/bastyp/calc.cxx	Wed Sep 08 14:22:51 2010 +0200
@@ -1620,9 +1620,10 @@
 BOOL SwCalc::Str2Double( const String& rCommand, xub_StrLen& rCommandPos,
 							double& rVal, const LocaleDataWrapper* pLclData )
 {
+    const SvtSysLocale aSysLocale;
 	const LocaleDataWrapper* pLclD = pLclData;
 	if( !pLclD )
-		pLclD = &SvtSysLocale().GetLocaleData();
+		pLclD = aSysLocale.GetLocaleDataPtr();
 
 	const xub_Unicode nCurrCmdPos = rCommandPos;
     rtl_math_ConversionStatus eStatus;
@@ -1634,7 +1635,7 @@
             &eStatus, &pEnd );
 	rCommandPos = static_cast<xub_StrLen>(pEnd - rCommand.GetBuffer());
 
-	if( !pLclData && pLclD != &SvtSysLocale().GetLocaleData() )
+	if( !pLclData && pLclD != &aSysLocale.GetLocaleData() )
 		delete (LocaleDataWrapper*)pLclD;
 
 	return rtl_math_ConversionStatus_Ok == eStatus && nCurrCmdPos != rCommandPos;
@@ -1643,7 +1644,8 @@
 BOOL SwCalc::Str2Double( const String& rCommand, xub_StrLen& rCommandPos,
 							double& rVal, SwDoc* pDoc )
 {
-	const LocaleDataWrapper* pLclD = &SvtSysLocale().GetLocaleData();
+    const SvtSysLocale aSysLocale;
+	const LocaleDataWrapper* pLclD = aSysLocale.GetLocaleDataPtr();
 	if( pDoc )
 	{
 
@@ -1664,7 +1666,7 @@
             &eStatus, &pEnd );
 	rCommandPos = static_cast<xub_StrLen>(pEnd - rCommand.GetBuffer());
 
-	if( pLclD != &SvtSysLocale().GetLocaleData() )
+	if( pLclD != &aSysLocale.GetLocaleData() )
 		delete (LocaleDataWrapper*)pLclD;
 
 	return rtl_math_ConversionStatus_Ok == eStatus && nCurrCmdPos != rCommandPos;