[Mono-bugs] [Bug 32416][Nor] Changed - issue with declaration inside a for loop
bugzilla-daemon@rocky.ximian.com
bugzilla-daemon@rocky.ximian.com
18 Nov 2002 15:49:40 -0000
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by lupus@ximian.com.
http://bugzilla.ximian.com/show_bug.cgi?id=32416
--- shadow/32416 Wed Oct 16 19:36:41 2002
+++ shadow/32416.tmp.29165 Mon Nov 18 10:49:40 2002
@@ -1,23 +1,23 @@
Bug#: 32416
-Product: Mono/Class Libraries
+Product: Mono/MCS
Version: unspecified
-OS:
+OS: unknown
OS Details:
Status: NEW
Resolution:
-Severity:
+Severity: Unknown
Priority: Normal
-Component: CORLIB
+Component: Misc
AssignedTo: mono-bugs@ximian.com
ReportedBy: mathias.hasselmann@gmx.de
QAContact: mono-bugs@ximian.com
TargetMilestone: ---
URL:
Cc:
-Summary: NullReferenceException in for-statement
+Summary: issue with declaration inside a for loop
The for-statement can cause a NullReferenceException if the variable used
in the abort condition is declared in the initialization portion of the for
statement.
@@ -43,6 +43,42 @@
Additional Information:
If line is declared before the for-statement everything works:
string line;
for(; null != (line = System.Console.ReadLine()); )
+
+------- Additional Comments From lupus@ximian.com 2002-11-18 10:49 -------
+This is a bug in mcs: it miscompiles the test.
+Note compiling the test with the mono runtime results in the broken
+outpout program. Compiling under the ms runtime results in an
+exception in mcs:
+Unhandled Exception: System.ArgumentException: Must be an array type.
+ at System.RuntimeType.GetArrayRank()
+ at Mono.CSharp.ArrayCreation.LookupType(EmitContext ec) in
+d:\mcs\mcs\expression.cs:line 4934
+ at Mono.CSharp.ArrayCreation.DoResolve(EmitContext ec) in
+d:\mcs\mcs\expression.cs:line 4943
+ at Mono.CSharp.Expression.Resolve(EmitContext ec, ResolveFlags
+flags) in d:\mcs\mcs\ecore.cs:line 310
+ at Mono.CSharp.Assign.DoResolve(EmitContext ec) in
+d:\mcs\mcs\assign.cs:line 165
+ at Mono.CSharp.Expression.Resolve(EmitContext ec, ResolveFlags
+flags) in d:\mcs\mcs\ecore.cs:line 310
+ at Mono.CSharp.StatementExpression.Resolve(EmitContext ec) in
+d:\mcs\mcs\statement.cs:line 572
+ at Mono.CSharp.Block.Resolve(EmitContext ec) in
+d:\mcs\mcs\statement.cs:line 3080
+ at Mono.CSharp.Block.Resolve(EmitContext ec) in
+d:\mcs\mcs\statement.cs:line 3080
+ at Mono.CSharp.EmitContext.EmitTopBlock(Block block,
+InternalParameters ip, Location loc) in d:\mcs\mcs\codegen.cs:line 511
+ at Mono.CSharp.MethodData.Emit(TypeContainer parent, Block block,
+Object kind) in d:\mcs\mcs\class.cs:line 3118
+ at Mono.CSharp.TypeContainer.Emit() in d:\mcs\mcs\class.cs:line 1424
+ at Mono.CSharp.RootContext.EmitCode() in
+d:\mcs\mcs\rootcontext.cs:line 762
+ at Mono.CSharp.Driver.MainDriver(String[] args) in
+d:\mcs\mcs\driver.cs:line 1257
+ at Mono.CSharp.Driver.Main(String[] args) in
+d:\mcs\mcs\driver.cs:line 242
+(null)