diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-08-05 08:15:51 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-08-05 08:15:51 -0700 |
commit | 782723d6d8c7b599c4fdbbd359a7bc57b25044ad (patch) | |
tree | ea5fba560d6a71c2611cd2ab87361f63d703484b /locale/loadarchive.c | |
parent | cf36e5034fa8ed5d44036bce09a55a7f00d19252 (diff) |
Also check dead->data[category] != NULL
_nl_load_locale_from_archive (int category, const char **namep)
has
for (cnt = 0; cnt < __LC_LAST; ++cnt)
if (cnt != LC_ALL)
{
lia->data[cnt] = _nl_intern_locale_data (cnt,
results[cnt].addr,
results[cnt].len);
if (__glibc_likely (lia->data[cnt] != NULL))
{
...
}
}
lia->data[cnt] can be NULL, which happens to en_US.UTF-8 with
LC_COLLATE. But this won't happen if glibc is configured with
--enable-hardcoded-path-in-tests. We should also check
dead->data[category] != NULL.
* locale/loadarchive.c (_nl_archive_subfreeres): Also check
dead->data[category] != NULL.
Diffstat (limited to 'locale/loadarchive.c')
-rw-r--r-- | locale/loadarchive.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/locale/loadarchive.c b/locale/loadarchive.c index ce5c21036c..3e18cf045b 100644 --- a/locale/loadarchive.c +++ b/locale/loadarchive.c @@ -515,7 +515,7 @@ _nl_archive_subfreeres (void) free (dead->name); for (category = 0; category < __LC_LAST; ++category) - if (category != LC_ALL) + if (category != LC_ALL && dead->data[category] != NULL) { /* _nl_unload_locale just does this free for the archive case. */ if (dead->data[category]->private.cleanup) |