aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gcc-4.4.3/README.google7
-rw-r--r--gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc36
-rw-r--r--gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.h2
-rw-r--r--gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc24
4 files changed, 48 insertions, 21 deletions
diff --git a/gcc-4.4.3/README.google b/gcc-4.4.3/README.google
index c6b3587b2..bfddb6db5 100644
--- a/gcc-4.4.3/README.google
+++ b/gcc-4.4.3/README.google
@@ -2111,3 +2111,10 @@ gcc/testsuite/g++.dg/init/ref15.C
Back port upstream fixes r156042 and r148110 to fix broken tests.
Owner: dougkwan
Status: in upstream.
+
+libstdc++-v3/config/locale/generic/c_locale.cc
+libstdc++-v3/config/locale/generic/c_locale.h
+libstdc++-v3/config/locale/generic/time_members.cc
+ Hanlde NULL return value of setlocale(), required by bionic.
+ Owner: jingyu
+ Status: local
diff --git a/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc b/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc
index 3b9f1bd42..587dc11de 100644
--- a/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc
+++ b/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc
@@ -51,10 +51,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
// Assumes __s formatted for "C" locale.
char* __old = setlocale(LC_ALL, NULL);
- const size_t __len = strlen(__old) + 1;
- char* __sav = new char[__len];
- memcpy(__sav, __old, __len);
- setlocale(LC_ALL, "C");
+ char* __sav = NULL;
+ if (__old != NULL)
+ {
+ const size_t __len = strlen(__old) + 1;
+ __sav = new char[__len];
+ memcpy(__sav, __old, __len);
+ setlocale(LC_ALL, "C");
+ }
char* __sanity;
bool __overflow = false;
@@ -116,10 +120,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
// Assumes __s formatted for "C" locale.
char* __old = setlocale(LC_ALL, NULL);
- const size_t __len = strlen(__old) + 1;
- char* __sav = new char[__len];
- memcpy(__sav, __old, __len);
- setlocale(LC_ALL, "C");
+ char* __sav = NULL;
+ if (__old != NULL)
+ {
+ const size_t __len = strlen(__old) + 1;
+ __sav = new char[__len];
+ memcpy(__sav, __old, __len);
+ setlocale(LC_ALL, "C");
+ }
char* __sanity;
#if !__DBL_HAS_INFINITY__
@@ -161,10 +169,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
// Assumes __s formatted for "C" locale.
char* __old = setlocale(LC_ALL, NULL);
- const size_t __len = strlen(__old) + 1;
- char* __sav = new char[__len];
- memcpy(__sav, __old, __len);
- setlocale(LC_ALL, "C");
+ char* __sav = NULL;
+ if (__old != NULL)
+ {
+ const size_t __len = strlen(__old) + 1;
+ __sav = new char[__len];
+ memcpy(__sav, __old, __len);
+ setlocale(LC_ALL, "C");
+ }
#if !__LDBL_HAS_INFINITY__
errno = 0;
diff --git a/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.h b/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.h
index 472ef5505..e27a9cdf6 100644
--- a/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.h
+++ b/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.h
@@ -59,7 +59,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
char* __old = std::setlocale(LC_NUMERIC, NULL);
char* __sav = NULL;
- if (__builtin_strcmp(__old, "C"))
+ if (__old != NULL && __builtin_strcmp(__old, "C"))
{
const size_t __len = __builtin_strlen(__old) + 1;
__sav = new char[__len];
diff --git a/gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc b/gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc
index 86c924959..46622944c 100644
--- a/gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc
+++ b/gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc
@@ -43,10 +43,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
const tm* __tm) const
{
char* __old = setlocale(LC_ALL, NULL);
- const size_t __llen = strlen(__old) + 1;
- char* __sav = new char[__llen];
- memcpy(__sav, __old, __llen);
- setlocale(LC_ALL, _M_name_timepunct);
+ char* __sav = NULL;
+ if (__old != NULL)
+ {
+ const size_t __llen = strlen(__old) + 1;
+ __sav = new char[__llen];
+ memcpy(__sav, __old, __llen);
+ setlocale(LC_ALL, _M_name_timepunct);
+ }
const size_t __len = strftime(__s, __maxlen, __format, __tm);
setlocale(LC_ALL, __sav);
delete [] __sav;
@@ -128,10 +132,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
const tm* __tm) const
{
char* __old = setlocale(LC_ALL, NULL);
- const size_t __llen = strlen(__old) + 1;
- char* __sav = new char[__llen];
- memcpy(__sav, __old, __llen);
- setlocale(LC_ALL, _M_name_timepunct);
+ char* __sav = NULL;
+ if (__old != NULL)
+ {
+ const size_t __llen = strlen(__old) + 1;
+ __sav = new char[__llen];
+ memcpy(__sav, __old, __llen);
+ setlocale(LC_ALL, _M_name_timepunct);
+ }
const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
setlocale(LC_ALL, __sav);
delete [] __sav;