From 4e519c3a22874ae0f6b2b2a9def6ad4c4b062eb3 Mon Sep 17 00:00:00 2001 From: Marek Safar Date: Mon, 22 Nov 2010 17:37:12 +0000 Subject: [PATCH] Don't multiply fixed buffer size (it's done by runtime). Fixes #654058 --- mcs/mcs/field.cs | 3 +-- mcs/tests/gtest-fixedbuffer-09.cs | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 mcs/tests/gtest-fixedbuffer-09.cs diff --git a/mcs/mcs/field.cs b/mcs/mcs/field.cs index 661a2a2f0ce..8933e1a2d87 100644 --- a/mcs/mcs/field.cs +++ b/mcs/mcs/field.cs @@ -357,7 +357,7 @@ namespace Mono.CSharp #region Properties // - // Explicit struct layout set be parent + // Explicit struct layout set by parent // public CharSet? CharSet { get; set; @@ -440,7 +440,6 @@ namespace Mono.CSharp return; } - buffer_size *= type_size; EmitFieldSize (buffer_size); Compiler.PredefinedAttributes.UnsafeValueType.EmitAttribute (fixed_buffer_type); diff --git a/mcs/tests/gtest-fixedbuffer-09.cs b/mcs/tests/gtest-fixedbuffer-09.cs new file mode 100644 index 00000000000..d100ceaec95 --- /dev/null +++ b/mcs/tests/gtest-fixedbuffer-09.cs @@ -0,0 +1,23 @@ +// Compiler options: -unsafe + +using System; +using System.Runtime.CompilerServices; + +unsafe struct Foo +{ + public fixed long FieldName[32]; +} + +class Test +{ + public static int Main () + { + var t = typeof (Foo); + var f = t.GetField ("FieldName"); + var fbas = f.GetCustomAttributes (typeof (FixedBufferAttribute), true)[0] as FixedBufferAttribute; + if (fbas.Length != 32) + return 1; + + return 0; + } +} -- 2.25.1