* locales.c
authorJackson Harper <jackson@novell.com>
Fri, 7 May 2004 14:25:26 +0000 (14:25 -0000)
committerJackson Harper <jackson@novell.com>
Fri, 7 May 2004 14:25:26 +0000 (14:25 -0000)
(ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
Fix array construction, add bailout if the length is 0.

svn path=/trunk/mono/; revision=26922

mono/metadata/ChangeLog
mono/metadata/locales.c

index 76d9871c4e5f2c215284dccb0d5320b41e050236..61275ccd4789f4cbd5361691566ebccbef8c7051 100644 (file)
@@ -1,3 +1,9 @@
+2004-05-07  Jackson Harper  <jackson@ximian.com>
+
+       * 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  <dick@ximian.com>
 
        * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
index 25c199f714972bb649839d3f106b4acf41b04800..ee9f1f67c16f74efa00c8e83ee80673b7daa6bc9 100644 (file)
@@ -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;