From: Jackson Harper Date: Fri, 7 May 2004 14:25:26 +0000 (-0000) Subject: * locales.c X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=a9c8c3860d7f60878564ece697736456a2596979;p=mono.git * locales.c (ves_icall_System_Globalization_CultureInfo_internal_get_cultures): Fix array construction, add bailout if the length is 0. svn path=/trunk/mono/; revision=26922 --- diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog index 76d9871c4e5..61275ccd478 100644 --- a/mono/metadata/ChangeLog +++ b/mono/metadata/ChangeLog @@ -1,3 +1,9 @@ +2004-05-07 Jackson Harper + + * locales.c + (ves_icall_System_Globalization_CultureInfo_internal_get_cultures): + Fix array construction, add bailout if the length is 0. + 2004-05-07 Dick Porter * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the diff --git a/mono/metadata/locales.c b/mono/metadata/locales.c index 25c199f7149..ee9f1f67c16 100644 --- a/mono/metadata/locales.c +++ b/mono/metadata/locales.c @@ -465,16 +465,19 @@ ves_icall_System_Globalization_CultureInfo_internal_get_cultures (MonoBoolean ne "System.Globalization", "CultureInfo"); ret = mono_array_new (domain, class, len); + if (len == 0) + return ret; + len = 0; for (i = 0; i < NUM_CULTURE_ENTRIES; i++) { ci = &culture_entries [i]; is_neutral = ((ci->lcid & 0xff00) == 0 || ci->specific_lcid == 0); - if ((neutral && !is_neutral) && (specific && is_neutral)) - continue; - culture = (MonoCultureInfo *) mono_object_new (domain, class); - mono_runtime_object_init ((MonoObject *) culture); - construct_culture (culture, ci); - mono_array_set (ret, MonoCultureInfo *, len++, culture); + if ((neutral && is_neutral) || (specific && !is_neutral)) { + culture = (MonoCultureInfo *) mono_object_new (domain, class); + mono_runtime_object_init ((MonoObject *) culture); + construct_culture (culture, ci); + mono_array_set (ret, MonoCultureInfo *, len++, culture); + } } return ret;