[runtime] Allow StructLayoutAttribute.Pack values between 16 and 128. Fixes #25059.
authorZoltan Varga <vargaz@gmail.com>
Tue, 9 Dec 2014 20:40:11 +0000 (15:40 -0500)
committerZoltan Varga <vargaz@gmail.com>
Tue, 9 Dec 2014 20:40:11 +0000 (15:40 -0500)
mono/metadata/class.c
mono/metadata/reflection.c

index 93853e594c1860a881bb3fabfbf4c485565b33eb..041b9e3dcd61c72b0fd2bd820763b8f53c62e59c 100644 (file)
@@ -1559,8 +1559,8 @@ mono_class_setup_fields (MonoClass *class)
        explicit_size = mono_metadata_packing_from_typedef (class->image, class->type_token, &packing_size, &real_size);
 
        if (explicit_size) {
-               if ((packing_size & 0xfffffff0) != 0) {
-                       char *err_msg = g_strdup_printf ("Could not load struct '%s' with packing size %d >= 16", class->name, packing_size);
+               if ((packing_size & 0xffffff00) != 0) {
+                       char *err_msg = g_strdup_printf ("Could not load struct '%s' with packing size %d >= 256", class->name, packing_size);
                        mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, err_msg);
                        return;
                }
index 0db16c92df451fbe4c2930a858ceffde31e7b91c..41f4204dc3125eb0e6e0bad9766bfefdaa7d0a00 100644 (file)
@@ -11186,8 +11186,8 @@ typebuilder_setup_fields (MonoClass *klass, MonoError *error)
        mono_error_init (error);
 
        if (tb->class_size) {
-               if ((tb->packing_size & 0xfffffff0) != 0) {
-                       char *err_msg = g_strdup_printf ("Could not load struct '%s' with packing size %d >= 16", klass->name, tb->packing_size);
+               if ((tb->packing_size & 0xffffff00) != 0) {
+                       char *err_msg = g_strdup_printf ("Could not load struct '%s' with packing size %d >= 256", klass->name, tb->packing_size);
                        mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, err_msg);
                        return;
                }