svn commit: r227818 - head/lib/libc/locale
David Chisnall
theraven at FreeBSD.org
Tue Nov 22 14:11:42 UTC 2011
Author: theraven
Date: Tue Nov 22 14:11:42 2011
New Revision: 227818
URL: http://svn.freebsd.org/changeset/base/227818
Log:
Fix a crash when trying to duplicate a locale that contains some implicit C locale components.
Reported by: Michael Butler
Approved by: dim (mentor)
Modified:
head/lib/libc/locale/xlocale.c
Modified: head/lib/libc/locale/xlocale.c
==============================================================================
--- head/lib/libc/locale/xlocale.c Tue Nov 22 13:30:36 2011 (r227817)
+++ head/lib/libc/locale/xlocale.c Tue Nov 22 14:11:42 2011 (r227818)
@@ -200,8 +200,13 @@ static int dupcomponent(int type, locale
if (new->components[type]) {
strncpy(new->components[type]->locale, src->locale, ENCODING_LEN);
}
- } else {
+ } else if (base->components[type]) {
new->components[type] = xlocale_retain(base->components[type]);
+ } else {
+ /* If the component was NULL, return success - if base is a valid
+ * locale then the flag indicating that this isn't present should be
+ * set. If it isn't a valid locale, then we're stuck anyway. */
+ return 1;
}
return (0 != new->components[type]);
}
More information about the svn-src-head
mailing list