Skip to content

Commit afa4bf5

Browse files
committed
Don't expose the underlying byte array directly from MySqlGeometry.
1 parent 4806b9e commit afa4bf5

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

src/MySqlConnector/MySql.Data.MySqlClient/MySqlBulkCopy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ static bool WriteValue(MySqlConnection connection, object? value, Span<byte> out
402402
var inputSpan = value is byte[] byteArray ? byteArray.AsSpan() :
403403
value is ArraySegment<byte> arraySegment ? arraySegment.AsSpan() :
404404
value is Memory<byte> memory ? memory.Span :
405-
value is MySqlGeometry geometry ? geometry.Value :
405+
value is MySqlGeometry geometry ? geometry.ValueSpan :
406406
((ReadOnlyMemory<byte>) value).Span;
407407

408408
return WriteBytes(inputSpan, output, out bytesWritten);

src/MySqlConnector/MySql.Data.MySqlClient/MySqlParameter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ internal void AppendSqlString(ByteBufferWriter writer, StatementPreparerOptions
284284
var inputSpan = Value is byte[] byteArray ? byteArray.AsSpan() :
285285
Value is ArraySegment<byte> arraySegment ? arraySegment.AsSpan() :
286286
Value is Memory<byte> memory ? memory.Span :
287-
Value is MySqlGeometry geometry ? geometry.Value :
287+
Value is MySqlGeometry geometry ? geometry.ValueSpan :
288288
((ReadOnlyMemory<byte>) Value).Span;
289289

290290
// determine the number of bytes to be written
@@ -503,8 +503,8 @@ internal void AppendBinary(ByteBufferWriter writer, StatementPreparerOptions opt
503503
}
504504
else if (Value is MySqlGeometry geometry)
505505
{
506-
writer.WriteLengthEncodedInteger(unchecked((ulong) geometry.Value.Length));
507-
writer.Write(geometry.Value);
506+
writer.WriteLengthEncodedInteger(unchecked((ulong) geometry.ValueSpan.Length));
507+
writer.Write(geometry.ValueSpan);
508508
}
509509
else if (Value is float floatValue)
510510
{

src/MySqlConnector/MySql.Data.Types/MySqlGeometry.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@ public static MySqlGeometry FromWkb(int srid, ReadOnlySpan<byte> wkb)
3838
/// <summary>
3939
/// The Well-known Binary serialization of this geometry.
4040
/// </summary>
41-
public ReadOnlySpan<byte> WKB => new ReadOnlySpan<byte>(Value).Slice(4);
41+
public ReadOnlySpan<byte> WKB => ValueSpan.Slice(4);
4242

4343
/// <summary>
4444
/// The internal MySQL form of this geometry.
4545
/// </summary>
46-
public byte[] Value => m_bytes;
46+
public byte[] Value => ValueSpan.ToArray();
47+
48+
internal ReadOnlySpan<byte> ValueSpan => m_bytes;
4749

4850
internal MySqlGeometry(byte[] bytes) => m_bytes = bytes;
4951

0 commit comments

Comments
 (0)