Skip to content

Commit 93e1d46

Browse files
committed
Do convert unsafe paths into native
This lets us have the platform-specific path separators.
1 parent 04fe088 commit 93e1d46

File tree

4 files changed

+15
-10
lines changed

4 files changed

+15
-10
lines changed

LibGit2Sharp/Core/FilePathMarshaler.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ public override Object MarshalNativeToManaged(IntPtr pNativeData)
117117
return LaxUtf8Marshaler.FromNative(pNativeData);
118118
}
119119

120+
public new static unsafe FilePath FromNative(char* buffer)
121+
{
122+
return LaxUtf8Marshaler.FromNative(buffer);
123+
}
124+
120125
public new static FilePath FromBuffer(byte[] buffer)
121126
{
122127
return LaxUtf8Marshaler.FromBuffer(buffer);

LibGit2Sharp/IndexNameEntry.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ internal static unsafe IndexNameEntry BuildFromPtr(git_index_name_entry* entry)
3030
}
3131

3232
string ancestor = entry->ancestor != null
33-
? LaxFilePathMarshaler.FromNative(entry->ancestor)
33+
? LaxFilePathMarshaler.FromNative(entry->ancestor).Native
3434
: null;
3535
string ours = entry->ours != null
36-
? LaxFilePathMarshaler.FromNative(entry->ours)
36+
? LaxFilePathMarshaler.FromNative(entry->ours).Native
3737
: null;
3838
string theirs = entry->theirs != null
39-
? LaxFilePathMarshaler.FromNative(entry->theirs)
39+
? LaxFilePathMarshaler.FromNative(entry->theirs).Native
4040
: null;
4141

4242
return new IndexNameEntry

LibGit2Sharp/RepositoryStatus.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,24 +138,24 @@ private unsafe void AddStatusEntryForDelta(FileStatus gitStatus, git_diff_delta*
138138
if ((gitStatus & FileStatus.RenamedInIndex) == FileStatus.RenamedInIndex)
139139
{
140140
headToIndexRenameDetails =
141-
new RenameDetails(LaxFilePathMarshaler.FromNative(deltaHeadToIndex->old_file.Path),
142-
LaxFilePathMarshaler.FromNative(deltaHeadToIndex->new_file.Path),
141+
new RenameDetails(LaxFilePathMarshaler.FromNative(deltaHeadToIndex->old_file.Path).Native,
142+
LaxFilePathMarshaler.FromNative(deltaHeadToIndex->new_file.Path).Native,
143143
(int)deltaHeadToIndex->similarity);
144144
}
145145

146146
if ((gitStatus & FileStatus.RenamedInWorkdir) == FileStatus.RenamedInWorkdir)
147147
{
148148
indexToWorkDirRenameDetails =
149-
new RenameDetails(LaxFilePathMarshaler.FromNative(deltaIndexToWorkDir->old_file.Path),
150-
LaxFilePathMarshaler.FromNative(deltaIndexToWorkDir->new_file.Path),
149+
new RenameDetails(LaxFilePathMarshaler.FromNative(deltaIndexToWorkDir->old_file.Path).Native,
150+
LaxFilePathMarshaler.FromNative(deltaIndexToWorkDir->new_file.Path).Native,
151151
(int)deltaIndexToWorkDir->similarity);
152152
}
153153

154154
var filePath = (deltaIndexToWorkDir != null)
155155
? LaxFilePathMarshaler.FromNative(deltaIndexToWorkDir->new_file.Path)
156156
: LaxFilePathMarshaler.FromNative(deltaHeadToIndex->new_file.Path);
157157

158-
StatusEntry statusEntry = new StatusEntry(filePath, gitStatus, headToIndexRenameDetails, indexToWorkDirRenameDetails);
158+
StatusEntry statusEntry = new StatusEntry(filePath.Native, gitStatus, headToIndexRenameDetails, indexToWorkDirRenameDetails);
159159

160160
if (gitStatus == FileStatus.Unaltered)
161161
{

LibGit2Sharp/TreeEntryChanges.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ protected TreeEntryChanges()
1818

1919
internal unsafe TreeEntryChanges(git_diff_delta* delta)
2020
{
21-
Path = LaxFilePathMarshaler.FromNative(delta->new_file.Path);
22-
OldPath = LaxFilePathMarshaler.FromNative(delta->old_file.Path);
21+
Path = LaxFilePathMarshaler.FromNative(delta->new_file.Path).Native;
22+
OldPath = LaxFilePathMarshaler.FromNative(delta->old_file.Path).Native;
2323

2424
Mode = (Mode)delta->new_file.Mode;
2525
OldMode = (Mode)delta->old_file.Mode;

0 commit comments

Comments
 (0)