You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by "Ron Grabowski (JIRA)" <ji...@apache.org> on 2006/09/25 04:51:52 UTC
[jira] Commented: (LOG4NET-95) Level.CompareTo() may result a wrong
Value -> sorting of Levels does not work
[ http://issues.apache.org/jira/browse/LOG4NET-95?page=comments#action_12437433 ]
Ron Grabowski commented on LOG4NET-95:
--------------------------------------
The CompareTo fix seems ok. I suspect subtraction was a clever way to save some cpu cycles.
FYI, Mono uses < and > instead of subtraction:
http://svn.myrealbox.com/viewcvs/*checkout*/trunk/mcs/class/corlib/System/Int32.cs
int xv = (int) v;
if (m_value == xv)
return 0;
if (m_value > xv)
return 1;
else
return -1;
Another solution would be to add a comment to the Level constructor and throw an ArgumentException for level values less than zero. There are 10,000 positive numbers between 0 and the lowest built-in log4net Level.
Since we know the two items we're comparing are ints, I think the inlined if/if/else block might save some cycles over CompareTo.
> Level.CompareTo() may result a wrong Value -> sorting of Levels does not work
> -----------------------------------------------------------------------------
>
> Key: LOG4NET-95
> URL: http://issues.apache.org/jira/browse/LOG4NET-95
> Project: Log4net
> Issue Type: Bug
> Components: Core
> Affects Versions: 1.2.10
> Environment: VS2005 C#
> Reporter: Bernd Klaiber
> Priority: Minor
>
> I want to show a sorted list of available Levels.
> The sort routine uses Level.Compare(Level l, Level r).
> The result might be wrong when comparing ALL to another Level, because there is an overflow when just subtracting the m_levelValue.
> try to call the integer compare method:
> Level.cs:
> public static int Compare(Level l, Level r)
> {
> ...
> //orig: return l.m_levelValue - r.m_levelValue; -> bug when int overflow
> return l.m_levelValue.CompareTo(r.m_levelValue);
> }
> hope this helps.
> best regards, Bernd.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira