https://bugzilla.novell.com/show_bug.cgi?id=385666
Summary: TraceImp.Indent() & TraceImp.Unindent() do not update the private TraceImp.indentLevel field Product: Mono: Class Libraries Version: 1.2.5 Platform: All OS/Version: Linux Status: NEW Severity: Minor Priority: P5 - None Component: System AssignedTo: mono-bugs@lists.ximian.com ReportedBy: [EMAIL PROTECTED] QAContact: mono-bugs@lists.ximian.com Found By: --- ************* Problem: TraceImp.IndentLevel does not track the actual indent level following TraceImp.Indent() or TraceImp.Unindent(). Since Trace and Debug both share TraceImp, then this issue probably also extends to Debug too, although I haven't checked. ************* Example: The following C# code (targeted to NET_2.0) run on Windows, and fails on Linux. <C#> int origIndentLevel = Trace.IndentLevel; Trace.Indent(); Assert.AreNotEqual(origIndentLevel, Trace.IndentLevel); </C#> Mode detailed examination of Windows behaviour shows that the value reported by Trace.IndentLevel increments and decrements in proportion to calls to Trace.Indent() and Trace.Unindent(). ************* Analysis: Reviewing mcs/classes/System/Syste.Diagnostics/TraceImpl.cs, the the get side of IndentLevel property is coded as: <C#> public static int IndentLevel { get {return indentLevel;} ... } </C#> However, the Indent() method is coded as: <C#> public static void Indent () { lock (ListenersSyncRoot) { foreach (TraceListener listener in Listeners) { listener.IndentLevel++; } } } <\C#> Clearly, the Indent method does not update the local indentLevel field. Likewise for the Unundent() method. ************* Proposed solution: Perhaps all that is required is to make the Indent() and Unindent() methods increment and decrement the local indentLevel field. For example, the Indent() method might be changed as follows: <C#> public static void Indent () { lock (ListenersSyncRoot) { // NEW CODE STARTS HERE indentLevel ++; // END OF NEW CODE foreach (TraceListener listener in Listeners) { listener.IndentLevel++; } } } <\C#> -- 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. _______________________________________________ mono-bugs maillist - mono-bugs@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-bugs