[Mono-bugs] [Bug 344217] New: VB. NET Late binding fails with ByRef output 2-dimensional array parameters.
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Tue Nov 27 02:14:24 EST 2007
https://bugzilla.novell.com/show_bug.cgi?id=344217
Summary: VB.NET Late binding fails with ByRef output 2-
dimensional array parameters.
Product: Mono: Runtime
Version: SVN
Platform: x86
OS/Version: Windows XP
Status: NEW
Severity: Major
Priority: P5 - None
Component: misc
AssignedTo: mono-bugs at ximian.com
ReportedBy: juanj.g_soria at grupobbva.com
QAContact: mono-bugs at ximian.com
Found By: ---
We are migrating some code from VB 6.0 to VB.NET under VS2005 to mono.
We found a problem with late binding in which the invocation of a method with a
ByRef output parameter whose type is a bidimensional array will fail.
This is a test case that works in MS .NET implementation:
-------------------------------------------------
Option Strict Off
Option Explicit On
Module TestModule
Public Class StrangeClass
Sub TheFunc(ByRef output(,) As Double)
output(0, 0) = 1.0
End Sub
End Class
Sub Main()
Dim o As Object
o = New StrangeClass
Dim data(1, 1) As Double
o.TheFunc(data)
End Sub
End Module
-------------------------------------------------
This, however, when run on SVN mono under Windows produces the following
output:
-------------------------------------------------
u514252 at W21682DD
/cygdrive/x/Test/QANP_Excel/Tests/Monocompat/LateBindingTest1/bin/Debug
$ mono --version
Mono JIT compiler version 1.2.6 (/trunk/ r90275)
Copyright (C) 2002-2007 Novell, Inc and Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Notification: Thread + polling
Architecture: x86
Disabled: none
u514252 at W21682DD
/cygdrive/x/Test/QANP_Excel/Tests/Monocompat/LateBindingTest1/bin/Debug
$ mono LateBindingTest1.exe
Unhandled Exception: System.ArgumentException: Array was not a one-dimensional
array.
at System.Array.GetValue (Int32 index) [0x00000]
at Microsoft.VisualBasic.CompilerServices.LateBinder.ReorderArgumentArray
(System.Object[]& args, System.Object state) [0x00000]
at System.MonoType.InvokeMember (System.String name, BindingFlags invokeAttr,
System.Reflection.Binder binder, System.Object target, System.Object[] args,
System.Reflection.ParameterModifier[] modifiers,
System.Globalization.CultureInfo culture, System.String[] namedParameters)
[0x00000]
at Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet (System.Object
o, System.Type objType, System.String name, System.Object[] args,
System.String[] paramnames, System.Boolean[] CopyBack) [0x00000]
at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall
(System.Object Instance, System.Type Type, System.String MemberName,
System.Object[] Arguments, System.String[] ArgumentNames, System.Type[]
TypeArguments, System.Boolean[] CopyBack, Boolean IgnoreReturn) [0x00000]
at LateBindingTest1.TestModule.Main () [0x00000]
u514252 at W21682DD
/cygdrive/x/Test/QANP_Excel/Tests/Monocompat/LateBindingTest1/bin/Debug
$
-------------------------------------------------
The limited amount of debugging that I've been able to do seems to suggest that
Microsoft.VisualBasic.CompilerServices.LateBinder.ReorderArgumentArray() is not
actually prepared to handle this case and will try to do something with the
parameter as a 1-dimensional array, triggering the issue at
System.Array.GetValue().
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the mono-bugs
mailing list