Skip to content

Commit 4c5c088

Browse files
committed
Get rid of SignatureSafeHandle
1 parent 1f50a0f commit 4c5c088

File tree

12 files changed

+147
-95
lines changed

12 files changed

+147
-95
lines changed

‎LibGit2Sharp/BlameHunk.cs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class BlameHunk : IEquatable<BlameHunk>
2020
x =>x.InitialCommit);
2121

2222

23-
internalBlameHunk(IRepositoryrepository,GitBlameHunkrawHunk)
23+
internalunsafeBlameHunk(IRepositoryrepository,GitBlameHunkrawHunk)
2424
{
2525
finalCommit=newLazy<Commit>(()=>repository.Lookup<Commit>(rawHunk.FinalCommitId));
2626
origCommit=newLazy<Commit>(()=>repository.Lookup<Commit>(rawHunk.OrigCommitId));
@@ -36,12 +36,12 @@ internal BlameHunk(IRepository repository, GitBlameHunk rawHunk)
3636
InitialStartLineNumber=rawHunk.OrigStartLineNumber-1;
3737

3838
// Signature objects need to have ownership of their native pointers
39-
if(rawHunk.FinalSignature!=IntPtr.Zero)
39+
if(rawHunk.FinalSignature!=null)
4040
{
4141
FinalSignature=newSignature(Proxy.git_signature_dup(rawHunk.FinalSignature));
4242
}
4343

44-
if(rawHunk.OrigSignature!=IntPtr.Zero)
44+
if(rawHunk.OrigSignature!=null)
4545
{
4646
InitialSignature=newSignature(Proxy.git_signature_dup(rawHunk.OrigSignature));
4747
}

‎LibGit2Sharp/Core/GitBlame.cs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,18 @@ internal class GitBlameOptions
5353
}
5454

5555
[StructLayout(LayoutKind.Sequential)]
56-
internalclassGitBlameHunk
56+
internalunsafeclassGitBlameHunk
5757
{
5858
publicushortLinesInHunk;
5959

6060
publicGitOidFinalCommitId;
6161
publicushortFinalStartLineNumber;
62-
publicIntPtrFinalSignature;
62+
publicgit_signature*FinalSignature;
6363

6464
publicGitOidOrigCommitId;
6565
publicIntPtrOrigPath;
6666
publicushortOrigStartLineNumber;
67-
publicIntPtrOrigSignature;
67+
publicgit_signature*OrigSignature;
6868

6969
publicbyteBoundary;
7070
}

‎LibGit2Sharp/Core/GitSignature.cs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
namespaceLibGit2Sharp.Core
55
{
66
[StructLayout(LayoutKind.Sequential)]
7-
internalclassGitSignature
7+
internalunsafestructgit_signature
88
{
9-
publicIntPtrName;
10-
publicIntPtrEmail;
11-
publicGitTimeWhen;
9+
publicchar*name;
10+
publicchar*email;
11+
publicgit_timewhen;
1212
}
1313
}

‎LibGit2Sharp/Core/GitTime.cs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
namespaceLibGit2Sharp.Core
44
{
55
[StructLayout(LayoutKind.Sequential)]
6-
internalclassGitTime
6+
internalunsafestructgit_time
77
{
8-
publiclongTime;
9-
publicintOffset;
8+
publiclongtime;
9+
publicintoffset;
1010
}
1111
}

‎LibGit2Sharp/Core/Handles/Objects.cs‎

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,4 +211,73 @@ public void Dispose()
211211
}
212212
}
213213

214+
internalunsafeclassSignatureHandle:IDisposable
215+
{
216+
git_signature*ptr;
217+
internalgit_signature*Handle
218+
{
219+
get
220+
{
221+
returnptr;
222+
}
223+
}
224+
225+
boolowned;
226+
booldisposed;
227+
228+
publicunsafeSignatureHandle(git_signature*handle,boolowned)
229+
{
230+
this.ptr=handle;
231+
this.owned=owned;
232+
}
233+
234+
publicunsafeSignatureHandle(IntPtrptr,boolowned)
235+
{
236+
this.ptr=(git_signature*)ptr.ToPointer();
237+
this.owned=owned;
238+
}
239+
240+
~SignatureHandle()
241+
{
242+
Dispose(false);
243+
}
244+
245+
internalboolIsNull
246+
{
247+
get
248+
{
249+
returnptr==null;
250+
}
251+
}
252+
253+
internalIntPtrAsIntPtr()
254+
{
255+
returnnewIntPtr(ptr);
256+
}
257+
258+
voidDispose(booldisposing)
259+
{
260+
if(!disposed)
261+
{
262+
if(owned)
263+
{
264+
NativeMethods.git_signature_free(ptr);
265+
ptr=null;
266+
}
267+
}
268+
269+
disposed=true;
270+
}
271+
272+
publicvoidDispose()
273+
{
274+
Dispose(true);
275+
}
276+
277+
publicstaticimplicitoperatorgit_signature*(SignatureHandlehandle)
278+
{
279+
returnhandle.Handle;
280+
}
281+
}
282+
214283
}

‎LibGit2Sharp/Core/Handles/Objects.tt‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ var cNames = new[]{
1515
"git_tree_entry",
1616
"git_reference",
1717
"git_repository",
18+
"git_signature",
1819
};
1920

2021
var csNames = new[]{
2122
"TreeEntryHandle",
2223
"ReferenceHandle",
2324
"RepositoryHandle",
25+
"SignatureHandle",
2426
};
2527

2628
for (var i = 0; i < cNames.Length; i++)

‎LibGit2Sharp/Core/Handles/SignatureSafeHandle.cs‎

Lines changed: 0 additions & 11 deletions
This file was deleted.

‎LibGit2Sharp/Core/NativeMethods.cs‎

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,11 @@ internal static extern int git_rebase_next(
224224
RebaseSafeHandlerebase);
225225

226226
[DllImport(libgit2)]
227-
internalstaticexternintgit_rebase_commit(
227+
internalstaticexternunsafeintgit_rebase_commit(
228228
refGitOidid,
229229
RebaseSafeHandlerebase,
230-
SignatureSafeHandleauthor,
231-
SignatureSafeHandlecommitter,
230+
git_signature*author,
231+
git_signature*committer,
232232
IntPtrmessage_encoding,
233233
IntPtrmessage);
234234

@@ -237,9 +237,9 @@ internal static extern int git_rebase_abort(
237237
RebaseSafeHandlerebase);
238238

239239
[DllImport(libgit2)]
240-
internalstaticexternintgit_rebase_finish(
240+
internalstaticexternunsafeintgit_rebase_finish(
241241
RebaseSafeHandlerepo,
242-
SignatureSafeHandlesignature);
242+
git_signature*signature);
243243

244244
[DllImport(libgit2)]
245245
internalstaticexternvoidgit_rebase_free(
@@ -285,18 +285,18 @@ internal static extern unsafe int git_clone(
285285
refGitCloneOptionsopts);
286286

287287
[DllImport(libgit2)]
288-
internalstaticexternIntPtrgit_commit_author(GitObjectSafeHandlecommit);
288+
internalstaticexternunsafegit_signature*git_commit_author(GitObjectSafeHandlecommit);
289289

290290
[DllImport(libgit2)]
291-
internalstaticexternIntPtrgit_commit_committer(GitObjectSafeHandlecommit);
291+
internalstaticexternunsafegit_signature*git_commit_committer(GitObjectSafeHandlecommit);
292292

293293
[DllImport(libgit2)]
294294
internalstaticexternunsafeintgit_commit_create_from_ids(
295295
outGitOidid,
296296
git_repository*repo,
297297
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringupdateRef,
298-
SignatureSafeHandleauthor,
299-
SignatureSafeHandlecommitter,
298+
git_signature*author,
299+
git_signature*committer,
300300
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringencoding,
301301
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringmessage,
302302
refGitOidtree,
@@ -810,8 +810,8 @@ internal static extern unsafe int git_note_create(
810810
outGitOidnoteOid,
811811
git_repository*repo,
812812
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringnotes_ref,
813-
SignatureSafeHandleauthor,
814-
SignatureSafeHandlecommitter,
813+
git_signature*author,
814+
git_signature*committer,
815815
refGitOidoid,
816816
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringnote,
817817
intforce);
@@ -837,8 +837,8 @@ internal static extern unsafe int git_note_read(
837837
internalstaticexternunsafeintgit_note_remove(
838838
git_repository*repo,
839839
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringnotes_ref,
840-
SignatureSafeHandleauthor,
841-
SignatureSafeHandlecommitter,
840+
git_signature*author,
841+
git_signature*committer,
842842
refGitOidoid);
843843

844844
[DllImport(libgit2)]
@@ -1102,7 +1102,7 @@ internal static extern ReflogEntrySafeHandle git_reflog_entry_byindex(
11021102
SafeHandleentry);
11031103

11041104
[DllImport(libgit2)]
1105-
internalstaticexternIntPtrgit_reflog_entry_committer(
1105+
internalstaticexternunsafegit_signature*git_reflog_entry_committer(
11061106
SafeHandleentry);
11071107

11081108
[DllImport(libgit2)]
@@ -1471,30 +1471,30 @@ internal static extern unsafe int git_revparse_ext(
14711471
internalstaticexternvoidgit_revwalk_simplify_first_parent(RevWalkerSafeHandlewalk);
14721472

14731473
[DllImport(libgit2)]
1474-
internalstaticexternvoidgit_signature_free(IntPtrsignature);
1474+
internalstaticexternunsafevoidgit_signature_free(git_signature*signature);
14751475

14761476
[DllImport(libgit2)]
1477-
internalstaticexternintgit_signature_new(
1478-
outSignatureSafeHandlesignature,
1477+
internalstaticexternunsafeintgit_signature_new(
1478+
outgit_signature*signature,
14791479
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringname,
14801480
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringemail,
14811481
longtime,
14821482
intoffset);
14831483

14841484
[DllImport(libgit2)]
1485-
internalstaticexternintgit_signature_now(
1486-
outSignatureSafeHandlesignature,
1485+
internalstaticexternunsafeintgit_signature_now(
1486+
outgit_signature*signature,
14871487
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringname,
14881488
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringemail);
14891489

14901490
[DllImport(libgit2)]
1491-
internalstaticexternintgit_signature_dup(outIntPtrdest,IntPtrsig);
1491+
internalstaticexternunsafeintgit_signature_dup(outgit_signature*dest,git_signature*sig);
14921492

14931493
[DllImport(libgit2)]
14941494
internalstaticexternunsafeintgit_stash_save(
14951495
outGitOidid,
14961496
git_repository*repo,
1497-
SignatureSafeHandlestasher,
1497+
git_signature*stasher,
14981498
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringmessage,
14991499
StashModifiersflags);
15001500

@@ -1650,7 +1650,7 @@ internal static extern unsafe int git_tag_annotation_create(
16501650
git_repository*repo,
16511651
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringname,
16521652
GitObjectSafeHandletarget,
1653-
SignatureSafeHandlesignature,
1653+
git_signature*signature,
16541654
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringmessage);
16551655

16561656
[DllImport(libgit2)]
@@ -1659,7 +1659,7 @@ internal static extern unsafe int git_tag_create(
16591659
git_repository*repo,
16601660
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringname,
16611661
GitObjectSafeHandletarget,
1662-
SignatureSafeHandlesignature,
1662+
git_signature*signature,
16631663
[MarshalAs(UnmanagedType.CustomMarshaler,MarshalCookie=UniqueId.UniqueIdentifier,MarshalTypeRef=typeof(StrictUtf8Marshaler))]stringmessage,
16641664
[MarshalAs(UnmanagedType.Bool)]
16651665
boolforce);
@@ -1690,7 +1690,7 @@ internal static extern unsafe int git_tag_delete(
16901690
internalstaticexternstringgit_tag_name(GitObjectSafeHandletag);
16911691

16921692
[DllImport(libgit2)]
1693-
internalstaticexternIntPtrgit_tag_tagger(GitObjectSafeHandletag);
1693+
internalstaticexternunsafegit_signature*git_tag_tagger(GitObjectSafeHandletag);
16941694

16951695
[DllImport(libgit2)]
16961696
internalstaticexternunsafegit_oid*git_tag_target_id(GitObjectSafeHandletag);

0 commit comments

Comments
(0)