#At file:///H:/connector_net/6.0/ based on revid:reggie.burnett@stripped
761 Vladislav Vaintroub 2009-09-01
Ensure that MySqlPacket always has a valid encoding. This prevents null reference exceptions in ReadString() (bug#46844)
modified:
CHANGES
MySql.Data/Provider/Source/MySqlPacket.cs
MySql.Data/Provider/Source/MySqlStream.cs
=== modified file 'CHANGES'
--- a/CHANGES 2009-08-27 22:56:43 +0000
+++ b/CHANGES 2009-09-01 14:01:55 +0000
@@ -1,4 +1,6 @@
Version 6.0.5
+- ensure that MySqlPacket always has a valid encoding. This prevents null reference exceptions in ReadString()
+ (bug#46844)
- fixed memory leak in server when calling stored procedure with output parameter many times
in the same session (bug#36027)
- workaround for .NET compact framework problems when writing behind the end of MemoryStream
=== modified file 'MySql.Data/Provider/Source/MySqlPacket.cs'
--- a/MySql.Data/Provider/Source/MySqlPacket.cs 2009-08-27 22:33:05 +0000
+++ b/MySql.Data/Provider/Source/MySqlPacket.cs 2009-09-01 14:01:55 +0000
@@ -34,14 +34,14 @@ namespace MySql.Data.MySqlClient
private MemoryStream buffer = new MemoryStream(5);
private DBVersion version;
- public MySqlPacket()
+ private MySqlPacket()
{
Clear();
}
- public MySqlPacket(Encoding encoding) : this()
+ public MySqlPacket(Encoding enc) : this()
{
- this.encoding = encoding;
+ Encoding = enc;
}
public MySqlPacket(MemoryStream stream)
@@ -55,7 +55,11 @@ namespace MySql.Data.MySqlClient
public Encoding Encoding
{
get { return encoding; }
- set { encoding = value; }
+ set
+ {
+ Debug.Assert(value != null);
+ encoding = value;
+ }
}
public bool HasMoreData
=== modified file 'MySql.Data/Provider/Source/MySqlStream.cs'
--- a/MySql.Data/Provider/Source/MySqlStream.cs 2009-09-01 03:54:56 +0000
+++ b/MySql.Data/Provider/Source/MySqlStream.cs 2009-09-01 14:01:55 +0000
@@ -33,14 +33,13 @@ namespace MySql.Data.MySqlClient
internal class MySqlStream
{
private byte sequenceByte;
- private Encoding encoding;
private MemoryStream bufferStream;
private int maxBlockSize;
private ulong maxPacketSize;
private Stream inStream;
private Stream outStream;
private byte[] tempBuffer = new byte[4];
- MySqlPacket packet = new MySqlPacket();
+ MySqlPacket packet;
public MySqlStream(Encoding encoding)
@@ -54,7 +53,7 @@ namespace MySql.Data.MySqlClient
// true maxBlockSize prior to that.
maxBlockSize = Int32.MaxValue;
- this.encoding = encoding;
+ packet = new MySqlPacket(encoding);
bufferStream = new MemoryStream();
}
@@ -83,8 +82,8 @@ namespace MySql.Data.MySqlClient
public Encoding Encoding
{
- get { return encoding; }
- set { encoding = value; }
+ get { return packet.Encoding; }
+ set { packet.Encoding = value; }
}
public byte SequenceByte
@@ -136,8 +135,6 @@ namespace MySql.Data.MySqlClient
}
throw new MySqlException(msg, code);
}
-
- packet.Encoding = encoding;
return packet;
}
Attachment: [text/bzr-bundle] bzr/vvaintroub@mysql.com-20090901140155-ptffskfck76nt7eh.bundle
| Thread |
|---|
| • bzr commit into connector-net-6.0 branch (vvaintroub:761) Bug#46844 | Vladislav Vaintroub | 1 Sep |