[Mono-dev] Possible compiler error regarding static unsafe initializers
Marek Safar
marek.safar at seznam.cz
Sat Aug 4 10:24:53 EDT 2007
Hello Stephen,
It seems to me like a bug. Please create a bug report with reproducible
test case.
Thanks
Marek
> The following code compiles with the .Net 2.0 csc, but fails on gmcs 1.2.4
> (Linux x64, vanilla compilation):
>
> internal unsafe delegate void CallLists(Int32 n, GL.Enums.ListNameType
> type, void* lists);
> internal unsafe static CallLists glCallLists =
> (CallLists)GL.GetDelegateForExtensionMethod("glCallLists",
> typeof(CallLists)) ??
> new CallLists(Imports.CallLists);
> ^(produces the error below)
> "[csc] [...]/OpenTK/OpenGL/Bindings/GLDelegates.cs(23,137): error CS0214:
> Pointers and fixed size buffers may only be used in an unsafe context"
>
> The error position (23,137) refers to the "new
> CallLists(Imports.CallLists);" part. The code is compiled with the /unsafe
> flag, and the context, as far as I can see, *is* unsafe ("internal unsafe
> [...]").
>
> This is part of the initialization logic of Tao.OpenGl. The idea is to
> initialize the glCallLists delegate either with a dynamically extracted
> entry point (GetDelegateForExtensionMethod), or, if the entry point is not
> dynamically exported, with the static entry point produced by a DllImport.
> While this issue can be worked around (either using reflection, or using
> 'safe' IntPtrs instead of raw pointers), I would like to know whether this
> is a genuine gmcs error, which should be reported, or a standard violation
> on the .Net csc side.
>
> Anyone have any ideas?
>
> Thanks,
> - Stephen A
>
>
>
More information about the Mono-devel-list
mailing list