8000 Small refactoring · philhack/libgit2sharp@cfd3c03 · GitHub
[go: up one dir, main page]

Skip to content

Commit cfd3c03

Browse files
committed
Small refactoring
1 parent 0625fce commit cfd3c03

File tree

2 files changed

+25
-19
lines changed

2 files changed

+25
-19
lines changed

LibGit2Sharp/OdbBackend.cs

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -393,10 +393,7 @@ private static unsafe int Write(
393393
UIntPtr len,
394394
GitObjectType type)
395395
{
396-
if (len.ToUInt64() > long.MaxValue)
397-
{
398-
return (int)GitErrorCode.Error;
399-
}
396+
long length = ConverToLong(len);
400397

401398
OdbBackend odbBackend = MarshalOdbBackend(backend);
402399
if (odbBackend == null)
@@ -406,9 +403,9 @@ private static unsafe int Write(
406403

407404
try
408405
{
409-
using (var stream = new UnmanagedMemoryStream((byte*)data, (long)len.ToUInt64()))
406+
using (var stream = new UnmanagedMemoryStream((byte*)data, length))
410407
{
411-
return odbBackend.Write(new ObjectId(oid), stream, (long)len.ToUInt64(), type.ToObjectType());
408+
return odbBackend.Write(new ObjectId(oid), stream, length, type.ToObjectType());
412409
}
413410
}
414411
catch (Exception ex)
@@ -421,15 +418,12 @@ private static unsafe int Write(
421418
private static int WriteStream(
422419
out IntPtr stream_out,
423420
IntPtr backend,
424-
UIntPtr length,
421+
UIntPtr len,
425422
GitObjectType type)
426423
{
427424
stream_out = IntPtr.Zero;
428425

429-
if (length.ToUInt64() > long.MaxValue)
430-
{
431-
return (int)GitErrorCode.Error;
432-
}
426+
long length = ConverToLong(len);
433427

434428
OdbBackend odbBackend = MarshalOdbBackend(backend);
435429
if (odbBackend == null)
@@ -442,7 +436,7 @@ private static int WriteStream(
442436
try
443437
{
444438
OdbBackendStream stream;
445-
int toReturn = odbBackend.WriteStream((long)length.ToUInt64(), objectType, out stream);
439+
int toReturn = odbBackend.WriteStream(length, objectType, out stream);
446440

447441
if (toReturn == 0)
448442
{
@@ -578,6 +572,18 @@ private unsafe int CallbackMethod(ObjectId id)
578572
}
579573
}
580574

575+
internal static long ConverToLong(UIntPtr len)
576+
{
577+
if (len.ToUInt64() > long.MaxValue)
578+
{
579+
throw new InvalidOperationException(
580+
string.Format("Provided length ({0}) exceeds long.MaxValue ({1}).",
581+
len.ToUInt64(), long.MaxValue));
582+
}
583+
584+
return (long)len.ToUInt64();
585+
}
586+
581587
/// <summary>
582588
/// Flags used by subclasses of OdbBackend to indicate which operations they support.
583589
/// </summary>

LibGit2Sharp/OdbBackendStream.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,15 @@ private unsafe static int Read(
145145
{
146146
OdbBackendStream odbBackendStream = GCHandle.FromIntPtr(Marshal.ReadIntPtr(stream, GitOdbBackendStream.GCHandleOffset)).Target as OdbBackendStream;
147147

148-
if (odbBackendStream != null &&
149-
len.ToUInt64() < long.MaxValue)
148+
if (odbBackendStream != null)
150149
{
151-
using (UnmanagedMemoryStream memoryStream = new UnmanagedMemoryStream((byte*)buffer, 0, (long)len.ToUInt64(), FileAccess.ReadWrite))
150+
long length = OdbBackend.ConverToLong(len);
151+
152+
using (UnmanagedMemoryStream memoryStream = new UnmanagedMemoryStream((byte*)buffer, 0, length, FileAccess.ReadWrite))
152153
{
153154
try
154155
{
155-
return odbBackendStream.Read(memoryStream, (long)len.ToUInt64());
156+
return odbBackendStream.Read(memoryStream, length);
156157
}
157158
catch (Exception ex)
158159
{
@@ -171,10 +172,9 @@ private static unsafe int Write(
171172
{
172173
OdbBackendStream odbBackendStream = GCHandle.FromIntPtr(Marshal.ReadIntPtr(stream, GitOdbBackendStream.GCHandleOffset)).Target as OdbBackendStream;
173174

174-
if (odbBackendStream != null &&
175-
len.ToUInt64() < long.MaxValue)
175+
if (odbBackendStream != null)
176176
{
177-
long length = (long)len.ToUInt64();
177+
long length = OdbBackend.ConverToLong(len);
178178

179179
using (UnmanagedMemoryStream dataStream = new UnmanagedMemoryStream((byte*)buffer, length))
180180
{

0 commit comments

Comments
 (0)
0