Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mcs/class
diff options
context:
space:
mode:
authorVeerapuram Varadhan <v.varadhan@gmail.com>2010-07-06 20:07:33 +0400
committerVeerapuram Varadhan <v.varadhan@gmail.com>2010-07-06 20:07:33 +0400
commitdb2fcaa9a577795248c15e46205c4eaebb4430c7 (patch)
tree59ac21a5e4232ae79bf94720cf0bfd16cbcaf5fe /mcs/class
parentb1afdaba84f5f698d33db38908d9aaf036f4a440 (diff)
backport of r159962
2010-07-06 Veerapuram Varadhan <vvaradhan@novell.com> ** Fixes #609109 * TdsComm.cs (Append[DateTime]): Handle datetime values sanely that are less than epoch. (Append[string]): Fix boundary checking for availability of enough buffer svn path=/branches/mono-2-6/mcs/; revision=159969
Diffstat (limited to 'mcs/class')
-rw-r--r--mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog8
-rw-r--r--mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs27
-rw-r--r--mcs/class/Mono.Data.Tds/Mono.Data.Tds/ChangeLog5
-rw-r--r--mcs/class/Mono.Data.Tds/Mono.Data.Tds/TdsMetaParameter.cs4
4 files changed, 36 insertions, 8 deletions
diff --git a/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog b/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog
index f5034518a4d..63ddd33c7a0 100644
--- a/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog
+++ b/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog
@@ -1,3 +1,11 @@
+2010-07-06 Veerapuram Varadhan <vvaradhan@novell.com>
+
+ ** Fixes #609109
+ * TdsComm.cs (Append[DateTime]): Handle datetime values sanely
+ that are less than epoch.
+ (Append[string]): Fix boundary checking for availability of
+ enough buffer
+
2010-07-03 Veerapuram Varadhan <vvaradhan@novell.com>
** Fixes #609935
diff --git a/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs b/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs
index 757610daa71..84ecf7b83e4 100644
--- a/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs
+++ b/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs
@@ -266,13 +266,28 @@ namespace Mono.Data.Tds.Protocol {
{
DateTime epoch = new DateTime (1900,1,1);
- TimeSpan span = t - epoch;
- int days = span.Days ;
- int val = 0;
-
+ TimeSpan span = t - epoch;
+ int days, hours, minutes, secs;
+ long msecs;
+ int val = 0;
+
+ days = span.Days;
+ hours = span.Hours;
+ minutes = span.Minutes;
+ secs = span.Seconds;
+ msecs = span.Milliseconds;
+
+ if (epoch > t) {
+ hours = t.Hour;
+ minutes = t.Minute;
+ secs = t.Second;
+ msecs = t.Millisecond;
+ days--;
+ }
+
SendIfFull (bytes);
if (bytes == 8) {
- long ms = (span.Hours * 3600 + span.Minutes * 60 + span.Seconds)*1000L + (long)span.Milliseconds;
+ long ms = (hours * 3600 + minutes * 60 + secs)*1000L + (long)msecs;
val = (int) ((ms*300)/1000);
AppendInternal ((int) days);
AppendInternal ((int) val);
@@ -379,7 +394,7 @@ namespace Mono.Data.Tds.Protocol {
int lenToWrite = s.Length * ssize;
// if nextOutBufferLength points to the last buffer in outBuffer,
// we would get a DivisionByZero while calculating remBufLen
- if (outBufferLength - nextOutBufferIndex < 1)
+ if (outBufferLength - nextOutBufferIndex < ssize)
SendIfFull (ssize);
int remBufLen = outBufferLength - nextOutBufferIndex;
diff --git a/mcs/class/Mono.Data.Tds/Mono.Data.Tds/ChangeLog b/mcs/class/Mono.Data.Tds/Mono.Data.Tds/ChangeLog
index e298d939191..f61f1363907 100644
--- a/mcs/class/Mono.Data.Tds/Mono.Data.Tds/ChangeLog
+++ b/mcs/class/Mono.Data.Tds/Mono.Data.Tds/ChangeLog
@@ -1,3 +1,8 @@
+2010-07-06 Veerapuram Varadhan <vvaradhan@novell.com>
+
+ * TdsMetaParameter.cs (Prepare): Use the count of characters in nvarchar
+ param as the size, to match .NET implementation.
+
2010-07-03 Veerapuram Varadhan <vvaradhan@novell.com>
** Fixes #609935
diff --git a/mcs/class/Mono.Data.Tds/Mono.Data.Tds/TdsMetaParameter.cs b/mcs/class/Mono.Data.Tds/Mono.Data.Tds/TdsMetaParameter.cs
index e722106f1a6..8ed81f7a16b 100644
--- a/mcs/class/Mono.Data.Tds/Mono.Data.Tds/TdsMetaParameter.cs
+++ b/mcs/class/Mono.Data.Tds/Mono.Data.Tds/TdsMetaParameter.cs
@@ -246,8 +246,8 @@ namespace Mono.Data.Tds {
break;
case "nvarchar":
case "xml":
- int paramSize = GetActualSize ();
- result.Append (paramSize > 0 ? (paramSize > 8000 ? "(max)" : String.Format ("({0})", paramSize)) : "(4000)");
+ int paramSize = GetActualSize () / 2;
+ result.Append (paramSize > 0 ? (paramSize > 4000 ? "(max)" : String.Format ("({0})", paramSize)) : "(4000)");
break;
case "char":
case "nchar":