[Mono-devel-list] Bug fix for Microsoft.VisualBasic.CompilerServices...

Christopher D. Hawkinson chawkinson at lantronix.com
Mon Apr 12 14:36:34 EDT 2004


Hi Everyone,
 
When trying to port some VB.NET controls to my RedHat Enterprise 3
system (Apache 2.0), I ran into a couple of issues with the
Microsoft.VisualBasic.CompilerServices class library (not surprising
considering its in its infancy). Specifically, the control uses code
such as...
 
            sPositionTag = Me.Style("POSITION")
            If (sPositionTag = "") Then
                sPositionTag = Me.Style("position")
            End If
 
If the Style option doesn't exist, Me.Style returns NULL.  The next line
which does the compare ends up calling StrCmp() within the
Microsoft.VisualBasic.CompilerServices class library. This function
causes an exception because the value being passed is a NULL object
(this code works fine on MS VB.NET, so it does appear to be legal).
 
Here is the new code I wrote for the StrCmp() function, so can someone
check it into the distribution source?
 
      public static System.Int32 StrCmp (System.String sLeft,
System.String sRight, System.Boolean TextCompare) 
            { 
                  System.Int32 leftLen;
                  System.Int32 rightLen;
 
                  // Set length of left and right
                  if ((object)sLeft == null) {
                        // Null, so its 0 length
                        leftLen = 0;
                  } else {
                        leftLen = sLeft.Length;
                  }
                  if ((object)sRight == null) {
                        // Null, so its 0 length
                        rightLen = 0;
                  } else {
                        rightLen = sRight.Length;
                  }
                  // Compare lengths first
                  if (leftLen == 0 && rightLen == 0) {
                        // Both are null (or zero length) so they are
equal
                        return 0;
                  } else if (leftLen == 0) {
                        // Left is null (or zero length) so it must be
less than the right
                        return -1;
                  } else if (rightLen == 0) {
                        // Right is null (or zero length) so it must be
less than the left
                        return 1;
                  } else {
                        // Both strings have something, so compare
normally
                        return sLeft.CompareTo(sRight);
                  }
            }
 
Thanks,
Chris  

Chris Hawkinson
Lantronix


**********************************************************************
This e-mail is the property of Lantronix. It is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential, or otherwise protected from disclosure. Distribution or copying of this e-mail, or the information contained herein, to anyone other than the intended recipient is prohibited.




More information about the Mono-devel-list mailing list