From 209a3e2d99971aaf0fae7e0b459c6d268347fcf0 Mon Sep 17 00:00:00 2001 From: Pablo Ruiz Garcia Date: Wed, 16 Nov 2011 21:18:36 +0100 Subject: [PATCH] Avoid internal character table used by gb18030 (on ms.net) from being collected by GC. --- mcs/class/I18N/CJK/GB18030Source.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mcs/class/I18N/CJK/GB18030Source.cs b/mcs/class/I18N/CJK/GB18030Source.cs index f9814f33365..0f3671ee9f7 100644 --- a/mcs/class/I18N/CJK/GB18030Source.cs +++ b/mcs/class/I18N/CJK/GB18030Source.cs @@ -43,6 +43,7 @@ namespace I18N.CJK static readonly byte *gbx2uni; static readonly byte *uni2gbx; static readonly int gbx2uniSize, uni2gbxSize; + static readonly byte[] table; static GB18030Source () { @@ -66,10 +67,11 @@ namespace I18N.CJK using (var ms = Assembly.GetExecutingAssembly() .GetManifestResourceStream("gb18030.table")) { - var data = new byte[ms.Length]; - ms.Read(data, 0, data.Length); + table = new byte[ms.Length]; + ms.Read(table, 0, table.Length); - fixed (byte* p = data) ret = (IntPtr)p; + // Table is a static field, so it wont be collected by GC. + fixed (byte* p = table) ret = (IntPtr)p; } } -- 2.11.4.GIT