* Tds70.cs : Fixed bug in FormatParameter() which caused
authorNagappan Alagappan <nagappan@gmail.com>
Tue, 26 Sep 2006 08:52:08 +0000 (08:52 -0000)
committerNagappan Alagappan <nagappan@gmail.com>
Tue, 26 Sep 2006 08:52:08 +0000 (08:52 -0000)
        ArgumentOutOfRangeException when formatting 0-length varbinary values
        under 1.0 profile.

svn path=/trunk/mcs/; revision=65905

mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog
mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds70.cs

index befb62b2d86797ee5bb128ceaf01eb6b7b2d3584..1d6c6377a76745186e991f85152e0a483f86431b 100644 (file)
@@ -1,3 +1,9 @@
+2006-07-18  Dean Brettle <dean@brettle.com>
+
+       * Tds70.cs : Fixed bug in FormatParameter() which caused 
+       ArgumentOutOfRangeException when formatting 0-length varbinary values
+       under 1.0 profile.
+
 2006-05-03  Senganal T  <tsenganal@novell.com>
 
        * Tds.cs : 
index 65d6206b561c4805f4d6e805471e53dcfb759679..1d068e48781b3a27ce2c64f44acbde1e49b3ae8c 100644 (file)
@@ -477,7 +477,13 @@ namespace Mono.Data.Tds.Protocol {
                        case "image":
                        case "binary":
                        case "varbinary":
-                               value = String.Format ("0x{0}", BitConverter.ToString ((byte[]) parameter.Value).Replace ("-", "").ToLower ());
+                               byte[] byteArray = (byte[]) parameter.Value;
+                               // In 1.0 profile, BitConverter.ToString() throws ArgumentOutOfRangeException when passed a 0-length
+                               // array, so handle that as a special case.
+                               if (byteArray.Length == 0)
+                                       value = "0x";
+                               else
+                                       value = String.Format ("0x{0}", BitConverter.ToString (byteArray).Replace ("-", "").ToLower ());
                                break;
                        default:
                                value = String.Format ("'{0}'", parameter.Value.ToString ().Replace ("'", "''"));