@@ -93,7 +93,8 @@ fn try_raw_entries(
93
93
entries : & [ Option < & IndexEntry > ] ,
94
94
cb : impl FnOnce ( & [ * const raw:: git_index_entry ] ) -> Result < ( ) , Error > ,
95
95
) -> Result < ( ) , Error > {
96
- let paths = entries. iter ( )
96
+ let paths = entries
97
+ . iter ( )
97
98
. map ( |entry| {
98
99
if let Some ( entry) = entry {
99
100
CString :: new ( & entry. path [ ..] ) . map ( |ok| Some ( ok) )
@@ -103,46 +104,51 @@ fn try_raw_entries(
103
104
} )
104
105
. collect :: < Result < Vec < Option < CString > > , std:: ffi:: NulError > > ( ) ?;
105
106
106
- let raw_entries = entries. iter ( ) . zip ( & paths) . map ( |( entry, path) | {
107
- if let Some ( entry) = entry {
108
- // libgit2 encodes the length of the path in the lower bits of the
109
- // `flags` entry, so mask those out and recalculate here to ensure we
110
- // don't corrupt anything.
111
- let mut flags = entry. flags & !raw:: GIT_INDEX_ENTRY_NAMEMASK ;
112
-
113
- if entry. path . len ( ) < raw:: GIT_INDEX_ENTRY_NAMEMASK as usize {
114
- flags |= entry. path . len ( ) as u16 ;
107
+ let raw_entries = entries
108
+ . iter ( )
109
+ . zip ( & paths)
110
+ . map ( |( entry, path) | {
111
+ if let Some ( entry) = entry {
112
+ // libgit2 encodes the length of the path in the lower bits of the
113
+ // `flags` entry, so mask those out and recalculate here to ensure we
114
+ // don't corrupt anything.
115
+ let mut flags = entry. flags & !raw:: GIT_INDEX_ENTRY_NAMEMASK ;
116
+
117
+ if entry. path . len ( ) < raw:: GIT_INDEX_ENTRY_NAMEMASK as usize {
118
+ flags |= entry. path . len ( ) as u16 ;
119
+ } else {
120
+ flags |= raw:: GIT_INDEX_ENTRY_NAMEMASK ;
121
+ }
122
+
123
+ unsafe {
124
+ Some ( raw:: git_index_entry {
125
+ dev : entry. dev ,
126
+ ino : entry. ino ,
127
+ mode : entry. mode ,
128
+ uid : entry. uid ,
129
+ gid : entry. gid ,
130
+ file_size : entry. file_size ,
131
+ id : * entry. id . raw ( ) ,
132
+ flags,
133
+ flags_extended : entry. flags_extended ,
134
+ path : path. as_ref ( ) . unwrap ( ) . as_ptr ( ) ,
135
+ mtime : raw:: git_index_time {
136
+ seconds : entry. mtime . seconds ( ) ,
137
+ nanoseconds : entry. mtime . nanoseconds ( ) ,
138
+ } ,
139
+ ctime : raw:: git_index_time {
140
+ seconds : entry. ctime . seconds ( ) ,
141
+ nanoseconds : entry. ctime . nanoseconds ( ) ,
142
+ } ,
143
+ } )
144
+ }
115
145
} else {
116
- flags |= raw:: GIT_INDEX_ENTRY_NAMEMASK ;
117
- }
118
-
119
- unsafe {
120
- Some ( raw:: git_index_entry {
121
- dev : entry. dev ,
122
- ino : entry. ino ,
123
- mode : entry. mode ,
124
- uid : entry. uid ,
125
- gid : entry. gid ,
126
- file_size : entry. file_size ,
127
- id : * entry. id . raw ( ) ,
128
- flags,
129
- flags_extended : entry. flags_extended ,
130
- path : path. as_ref ( ) . unwrap ( ) . as_ptr ( ) ,
131
- mtime : raw:: git_index_time {
132
- seconds : entry. mtime . seconds ( ) ,
133
- nanoseconds : entry. mtime . nanoseconds ( ) ,
134
- } ,
135
- ctime : raw:: git_index_time {
136
- seconds : entry. ctime . seconds ( ) ,
137
- nanoseconds : entry. ctime . nanoseconds ( ) ,
138
- } ,
139
- } )
146
+ None
140
147
}
141
- } else {
142
- None
143
- }
144
- } ) . collect :: < Vec < _ > > ( ) ;
145
- let raw_entry_ptrs = raw_entries. iter ( )
148
+ } )
149
+ . collect :: < Vec < _ > > ( ) ;
150
+ let raw_entry_ptrs = raw_entries
151
+ . iter ( )
146
152
. map ( |opt| opt. as_ref ( ) . map_or_else ( std:: ptr:: null, |ptr| ptr) )
147
153
. collect :: < Vec < _ > > ( ) ;
148
154
@@ -426,17 +432,18 @@ impl Index {
426
432
our_entry : Option < & IndexEntry > ,
427
433
their_entry : Option < & IndexEntry > ,
428
434
) -> Result < ( ) , Error > {
429
- try_raw_entries ( & [ ancestor_entry, our_entry, their_entry] , |raw_entries| {
430
- unsafe {
435
+ try_raw_entries (
436
+ & [ ancestor_entry, our_entry, their_entry] ,
437
+ |raw_entries| unsafe {
431
438
try_call ! ( raw:: git_index_conflict_add(
432
439
self . raw,
433
440
raw_entries[ 0 ] ,
434
441
raw_entries[ 1 ] ,
435
442
raw_entries[ 2 ]
436
443
) ) ;
437
444
Ok ( ( ) )
438
- }
439
- } )
445
+ } ,
446
+ )
440
447
}
441
448
442
449
/// Remove all conflicts in the index (entries with a stage greater than 0).
0 commit comments