diff options
author | nulltoken <emeric.fermas@gmail.com> | 2012-03-28 16:40:57 +0400 |
---|---|---|
committer | nulltoken <emeric.fermas@gmail.com> | 2012-03-28 18:48:08 +0400 |
commit | c86825cc038a55d620b2fb0b11e4c734688810af (patch) | |
tree | cd01eec69bd39b386aab6225f2318079b449fde8 /LibGit2Sharp | |
parent | c1a5d24bc9f0a2506ec249e2decf7331ca65ce7f (diff) |
Replace usage of IntPtr holding references to tree entries with TreeEntrySafeHandle
Diffstat (limited to 'LibGit2Sharp')
-rw-r--r-- | LibGit2Sharp/Core/NativeMethods.cs | 14 | ||||
-rw-r--r-- | LibGit2Sharp/Tree.cs | 10 | ||||
-rwxr-xr-x | LibGit2Sharp/TreeEntry.cs | 3 |
3 files changed, 14 insertions, 13 deletions
diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index 430ab4a6..3344a3b3 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -450,28 +450,28 @@ namespace LibGit2Sharp.Core public static extern int git_tree_create_fromindex(out GitOid treeOid, IndexSafeHandle index); [DllImport(libgit2)] - public static extern int git_tree_entry_2object(out GitObjectSafeHandle obj, RepositorySafeHandle repo, IntPtr entry); + public static extern int git_tree_entry_2object(out GitObjectSafeHandle obj, RepositorySafeHandle repo, TreeEntrySafeHandle entry); [DllImport(libgit2)] - public static extern uint git_tree_entry_attributes(IntPtr entry); + public static extern uint git_tree_entry_attributes(TreeEntrySafeHandle entry); [DllImport(libgit2)] - public static extern IntPtr git_tree_entry_byindex(GitObjectSafeHandle tree, uint idx); + public static extern TreeEntrySafeHandle git_tree_entry_byindex(GitObjectSafeHandle tree, uint idx); [DllImport(libgit2)] - public static extern IntPtr git_tree_entry_byname( + public static extern TreeEntrySafeHandle git_tree_entry_byname( GitObjectSafeHandle tree, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(FilePathMarshaler))] FilePath filename); [DllImport(libgit2)] - public static extern IntPtr git_tree_entry_id(IntPtr entry); + public static extern IntPtr git_tree_entry_id(TreeEntrySafeHandle entry); [DllImport(libgit2)] [return : MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] - public static extern string git_tree_entry_name(IntPtr entry); + public static extern string git_tree_entry_name(TreeEntrySafeHandle entry); [DllImport(libgit2)] - public static extern GitObjectType git_tree_entry_type(IntPtr entry); + public static extern GitObjectType git_tree_entry_type(TreeEntrySafeHandle entry); [DllImport(libgit2)] public static extern uint git_tree_entrycount(GitObjectSafeHandle tree); diff --git a/LibGit2Sharp/Tree.cs b/LibGit2Sharp/Tree.cs index 0fd4050c..f9f883f6 100644 --- a/LibGit2Sharp/Tree.cs +++ b/LibGit2Sharp/Tree.cs @@ -61,15 +61,15 @@ namespace LibGit2Sharp string posixPath = relativePath.Posix; string filename = posixPath.Split('/').Last(); - IntPtr e = NativeMethods.git_tree_entry_byname(objectPtr, filename); + TreeEntrySafeHandle handle = NativeMethods.git_tree_entry_byname(objectPtr, filename); - if (e == IntPtr.Zero) + if (handle.IsInvalid) { return null; } string parentPath = posixPath.Substring(0, posixPath.Length - filename.Length); - return new TreeEntry(e, Id, repo, path.Combine(parentPath)); + return new TreeEntry(handle, Id, repo, path.Combine(parentPath)); } } @@ -118,8 +118,8 @@ namespace LibGit2Sharp { for (uint i = 0; i < Count; i++) { - IntPtr e = NativeMethods.git_tree_entry_byindex(obj.ObjectPtr, i); - yield return new TreeEntry(e, Id, repo, path); + TreeEntrySafeHandle handle = NativeMethods.git_tree_entry_byindex(obj.ObjectPtr, i); + yield return new TreeEntry(handle, Id, repo, path); } } } diff --git a/LibGit2Sharp/TreeEntry.cs b/LibGit2Sharp/TreeEntry.cs index b768c342..30a7c97b 100755 --- a/LibGit2Sharp/TreeEntry.cs +++ b/LibGit2Sharp/TreeEntry.cs @@ -2,6 +2,7 @@ using System; using System.Runtime.InteropServices; using LibGit2Sharp.Core; using LibGit2Sharp.Core.Compat; +using LibGit2Sharp.Core.Handles; namespace LibGit2Sharp { @@ -19,7 +20,7 @@ namespace LibGit2Sharp private static readonly LambdaEqualityHelper<TreeEntry> equalityHelper = new LambdaEqualityHelper<TreeEntry>(new Func<TreeEntry, object>[] { x => x.Name, x => x.parentTreeId }); - internal TreeEntry(IntPtr obj, ObjectId parentTreeId, Repository repo, FilePath parentPath) + internal TreeEntry(TreeEntrySafeHandle obj, ObjectId parentTreeId, Repository repo, FilePath parentPath) { this.parentTreeId = parentTreeId; this.repo = repo; |