Skip to content

Commit 3a1e3ce

Browse files
committed
Removed necessity to allocate 0 size array
1 parent ddaf012 commit 3a1e3ce

File tree

5 files changed

+34
-34
lines changed

5 files changed

+34
-34
lines changed

src/FirebirdSql.Data.FirebirdClient/Client/Managed/Version10/GdsStatement.cs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ public override void Execute(int timeout, IDescriptorFiller descriptorFiller)
315315
}
316316

317317
var executeResponse = (GenericResponse)_database.ReadResponse();
318-
ProcessExecuteResponse(executeResponse);
318+
ProcessExecuteResponse(executeResponse);
319319

320320
if (DoRecordsAffected)
321321
{
@@ -669,7 +669,7 @@ protected override void Free(int option)
669669
return;
670670

671671
DoFreePacket(option);
672-
ProcessFreeResponse(_database.ReadResponse());
672+
ProcessFreeResponse(_database.ReadResponse());
673673
}
674674
protected override async ValueTask FreeAsync(int option, CancellationToken cancellationToken = default)
675675
{
@@ -1351,7 +1351,7 @@ protected virtual byte[] WriteParameters()
13511351
var field = _parameters[i];
13521352
try
13531353
{
1354-
WriteRawParameter(xdr, field);
1354+
WriteRawParameter(xdr, field);
13551355
xdr.Write(field.NullFlag);
13561356
}
13571357
catch (IOException ex)
@@ -1414,25 +1414,25 @@ protected static void WriteRawParameter(IXdrWriter xdr, DbField field)
14141414
if (byteCount > field.Length)
14151415
{
14161416
throw IscException.ForErrorCodes([IscCodes.isc_arith_except, IscCodes.isc_string_truncation]);
1417-
}
1417+
}
14181418
Span<byte> stack = byteCount <= 512 ? stackalloc byte[byteCount] : Span<byte>.Empty;
14191419
if (!stack.IsEmpty)
14201420
{
14211421
encoding.GetBytes(svalue.AsSpan(), stack);
14221422
xdr.WriteOpaque(stack, field.Length);
14231423
}
1424-
else
1425-
{
1424+
else
1425+
{
14261426
var rented = System.Buffers.ArrayPool<byte>.Shared.Rent(byteCount);
14271427
try
1428-
{
1428+
{
14291429
var written = encoding.GetBytes(svalue, 0, svalue.Length, rented, 0);
14301430
xdr.WriteOpaque(rented.AsSpan(0, written), field.Length);
1431-
}
1431+
}
14321432
finally
14331433
{
14341434
System.Buffers.ArrayPool<byte>.Shared.Return(rented);
1435-
}
1435+
}
14361436
}
14371437
}
14381438
break;
@@ -1456,17 +1456,17 @@ protected static void WriteRawParameter(IXdrWriter xdr, DbField field)
14561456
{
14571457
encoding.GetBytes(svalue.AsSpan(), stack);
14581458
xdr.WriteBuffer(stack);
1459-
}
1460-
else
1461-
{
1459+
}
1460+
else
1461+
{
14621462
var rented = System.Buffers.ArrayPool<byte>.Shared.Rent(byteCount);
14631463
try
14641464
{
14651465
var written = encoding.GetBytes(svalue, 0, svalue.Length, rented, 0);
14661466
xdr.WriteBuffer(rented.AsSpan(0, written));
14671467
}
14681468
finally
1469-
{
1469+
{
14701470
System.Buffers.ArrayPool<byte>.Shared.Return(rented);
14711471
}
14721472
}
@@ -1588,16 +1588,16 @@ protected static async ValueTask WriteRawParameterAsync(IXdrWriter xdr, DbField
15881588
if (byteCount > field.Length)
15891589
{
15901590
throw IscException.ForErrorCodes([IscCodes.isc_arith_except, IscCodes.isc_string_truncation]);
1591-
}
1591+
}
15921592
{
15931593
var rented = System.Buffers.ArrayPool<byte>.Shared.Rent(byteCount);
15941594
try
1595-
{
1595+
{
15961596
var written = encoding.GetBytes(svalue, 0, svalue.Length, rented, 0);
15971597
await xdr.WriteOpaqueAsync(rented.AsMemory(0, written), written, cancellationToken).ConfigureAwait(false);
15981598
}
15991599
finally
1600-
{
1600+
{
16011601
System.Buffers.ArrayPool<byte>.Shared.Return(rented);
16021602
}
16031603
}
@@ -1621,12 +1621,12 @@ protected static async ValueTask WriteRawParameterAsync(IXdrWriter xdr, DbField
16211621
{
16221622
var rented = System.Buffers.ArrayPool<byte>.Shared.Rent(byteCount);
16231623
try
1624-
{
1624+
{
16251625
var written = encoding.GetBytes(svalue, 0, svalue.Length, rented, 0);
16261626
await xdr.WriteBufferAsync(rented.AsMemory(0, written), cancellationToken).ConfigureAwait(false);
16271627
}
16281628
finally
1629-
{
1629+
{
16301630
System.Buffers.ArrayPool<byte>.Shared.Return(rented);
16311631
}
16321632
}
@@ -1927,7 +1927,7 @@ protected void ClearAll()
19271927

19281928
protected virtual DbValue[] ReadRow()
19291929
{
1930-
var row = new DbValue[_fields.Count];
1930+
var row = _fields.Count > 0 ? new DbValue[_fields.Count] : Array.Empty<DbValue>();
19311931
try
19321932
{
19331933
for (var i = 0; i < _fields.Count; i++)
@@ -1956,7 +1956,7 @@ protected virtual DbValue[] ReadRow()
19561956
}
19571957
protected virtual async ValueTask<DbValue[]> ReadRowAsync(CancellationToken cancellationToken = default)
19581958
{
1959-
var row = new DbValue[_fields.Count];
1959+
var row = _fields.Count > 0 ? new DbValue[_fields.Count] : Array.Empty<DbValue>();
19601960
try
19611961
{
19621962
for (var i = 0; i < _fields.Count; i++)

src/FirebirdSql.Data.FirebirdClient/Client/Managed/XdrReaderWriter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ sealed class XdrReaderWriter : IXdrReader, IXdrWriter
3434
readonly Charset _charset;
3535

3636
byte[] _smallBuffer;
37-
const int StackallocThreshold = 1024;
37+
const int StackallocThreshold = 1024;
3838

3939
public XdrReaderWriter(IDataProvider dataProvider, Charset charset)
4040
{
@@ -134,7 +134,7 @@ public async ValueTask ReadBytesAsync(Memory<byte> buffer, int count, Cancellati
134134

135135
public byte[] ReadOpaque(int length)
136136
{
137-
var buffer = length > 0 ? new byte[length] : _emptyBuf;
137+
var buffer = length > 0 ? new byte[length] : Array.Empty<byte>();
138138
ReadBytes(buffer, length);
139139
ReadPad((4 - length) & 3);
140140
return buffer;
@@ -148,7 +148,7 @@ public void ReadOpaque(Span<byte> dst, int length)
148148

149149
public async ValueTask<byte[]> ReadOpaqueAsync(int length, CancellationToken cancellationToken = default)
150150
{
151-
var buffer = length > 0 ? new byte[length] : _emptyBuf;
151+
var buffer = length > 0 ? new byte[length] : Array.Empty<byte>();
152152
await ReadBytesAsync(buffer, length, cancellationToken).ConfigureAwait(false);
153153
await ReadPadAsync((4 - length) & 3, cancellationToken).ConfigureAwait(false);
154154
return buffer;

src/FirebirdSql.Data.FirebirdClient/Client/Native/FesBlob.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ internal sealed class FesBlob : BlobBase
2828
{
2929
#region Fields
3030

31-
private FesDatabase _database;
32-
private IntPtr[] _statusVector;
31+
private readonly FesDatabase _database;
32+
private readonly IntPtr[] _statusVector;
3333
private BlobHandle _blobHandle;
3434

3535
#endregion
@@ -84,7 +84,7 @@ public override void Create()
8484
ref _blobHandle,
8585
ref _blobId,
8686
0,
87-
new byte[0]);
87+
Array.Empty<byte>());
8888

8989
_database.ProcessStatusVector(_statusVector);
9090

@@ -106,7 +106,7 @@ public override ValueTask CreateAsync(CancellationToken cancellationToken = defa
106106
ref _blobHandle,
107107
ref _blobId,
108108
0,
109-
new byte[0]);
109+
Array.Empty<byte>());
110110

111111
_database.ProcessStatusVector(_statusVector);
112112

@@ -131,7 +131,7 @@ public override void Open()
131131
ref _blobHandle,
132132
ref _blobId,
133133
0,
134-
new byte[0]);
134+
Array.Empty<byte>());
135135

136136
_database.ProcessStatusVector(_statusVector);
137137

@@ -151,7 +151,7 @@ public override ValueTask OpenAsync(CancellationToken cancellationToken = defaul
151151
ref _blobHandle,
152152
ref _blobId,
153153
0,
154-
new byte[0]);
154+
Array.Empty<byte>());
155155

156156
_database.ProcessStatusVector(_statusVector);
157157

src/FirebirdSql.Data.FirebirdClient/Client/Native/FesStatement.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ public override void Execute(int timeout, IDescriptorFiller descriptorFiller)
408408
{
409409
var descriptor = XsqldaMarshaler.MarshalNativeToManaged(_database.Charset, outSqlda, true);
410410

411-
var values = new DbValue[descriptor.Count];
411+
var values = descriptor.Count > 0 ? new DbValue[descriptor.Count] : Array.Empty<DbValue>();
412412

413413
for (var i = 0; i < values.Length; i++)
414414
{
@@ -480,7 +480,7 @@ public override async ValueTask ExecuteAsync(int timeout, IDescriptorFiller desc
480480
{
481481
var descriptor = XsqldaMarshaler.MarshalNativeToManaged(_database.Charset, outSqlda, true);
482482

483-
var values = new DbValue[descriptor.Count];
483+
var values = descriptor.Count > 0 ? new DbValue[descriptor.Count] : Array.Empty<DbValue>();
484484

485485
for (var i = 0; i < values.Length; i++)
486486
{
@@ -569,7 +569,7 @@ public override DbValue[] Fetch()
569569

570570
_database.ProcessStatusVector(_statusVector);
571571

572-
var row = new DbValue[_fields.ActualCount];
572+
var row = _fields.ActualCount > 0 ? new DbValue[_fields.ActualCount] : Array.Empty<DbValue>();
573573
for (var i = 0; i < row.Length; i++)
574574
{
575575
var d = _fields[i];
@@ -639,7 +639,7 @@ public override async ValueTask<DbValue[]> FetchAsync(CancellationToken cancella
639639

640640
_database.ProcessStatusVector(_statusVector);
641641

642-
var row = new DbValue[_fields.ActualCount];
642+
var row = _fields.ActualCount > 0 ? new DbValue[_fields.ActualCount] : Array.Empty<DbValue>();
643643
for (var i = 0; i < row.Length; i++)
644644
{
645645
var d = _fields[i];

src/FirebirdSql.Data.FirebirdClient/Common/Descriptor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public Descriptor(short n)
7878
_version = IscCodes.SQLDA_VERSION1;
7979
_count = n;
8080
_actualCount = n;
81-
_fields = new DbField[n];
81+
_fields = n > 0 ? new DbField[n] : Array.Empty<DbField>();
8282

8383
for (var i = 0; i < n; i++)
8484
{

0 commit comments

Comments
 (0)