@@ -154,15 +154,15 @@ static void show_result(void)
154154/* An empty entry never compares same, not even to another empty entry */
155155static int same_entry (struct name_entry * a , struct name_entry * b )
156156{
157- return a -> oid &&
158- b -> oid &&
159- oideq (a -> oid , b -> oid ) &&
157+ return ! is_null_oid ( & a -> oid ) &&
158+ ! is_null_oid ( & b -> oid ) &&
159+ oideq (& a -> oid , & b -> oid ) &&
160160 a -> mode == b -> mode ;
161161}
162162
163163static int both_empty (struct name_entry * a , struct name_entry * b )
164164{
165- return !( a -> oid || b -> oid );
165+ return is_null_oid ( & a -> oid ) && is_null_oid ( & b -> oid );
166166}
167167
168168static struct merge_list * create_entry (unsigned stage , unsigned mode , const struct object_id * oid , const char * path )
@@ -178,7 +178,7 @@ static struct merge_list *create_entry(unsigned stage, unsigned mode, const stru
178178
179179static char * traverse_path (const struct traverse_info * info , const struct name_entry * n )
180180{
181- char * path = xmallocz (traverse_path_len (info , n ));
181+ char * path = xmallocz (traverse_path_len (info , n ) + the_hash_algo -> rawsz );
182182 return make_traverse_path (path , info , n );
183183}
184184
@@ -192,8 +192,8 @@ static void resolve(const struct traverse_info *info, struct name_entry *ours, s
192192 return ;
193193
194194 path = traverse_path (info , result );
195- orig = create_entry (2 , ours -> mode , ours -> oid , path );
196- final = create_entry (0 , result -> mode , result -> oid , path );
195+ orig = create_entry (2 , ours -> mode , & ours -> oid , path );
196+ final = create_entry (0 , result -> mode , & result -> oid , path );
197197
198198 final -> link = orig ;
199199
@@ -217,7 +217,7 @@ static void unresolved_directory(const struct traverse_info *info,
217217
218218 newbase = traverse_path (info , p );
219219
220- #define ENTRY_OID (e ) (((e)->mode && S_ISDIR((e)->mode)) ? (e)->oid : NULL)
220+ #define ENTRY_OID (e ) (((e)->mode && S_ISDIR((e)->mode)) ? & (e)->oid : NULL)
221221 buf0 = fill_tree_descriptor (t + 0 , ENTRY_OID (n + 0 ));
222222 buf1 = fill_tree_descriptor (t + 1 , ENTRY_OID (n + 1 ));
223223 buf2 = fill_tree_descriptor (t + 2 , ENTRY_OID (n + 2 ));
@@ -243,7 +243,7 @@ static struct merge_list *link_entry(unsigned stage, const struct traverse_info
243243 path = entry -> path ;
244244 else
245245 path = traverse_path (info , n );
246- link = create_entry (stage , n -> mode , n -> oid , path );
246+ link = create_entry (stage , n -> mode , & n -> oid , path );
247247 link -> link = entry ;
248248 return link ;
249249}
@@ -318,7 +318,7 @@ static int threeway_callback(int n, unsigned long mask, unsigned long dirmask, s
318318 }
319319
320320 if (same_entry (entry + 0 , entry + 1 )) {
321- if (entry [2 ].oid && !S_ISDIR (entry [2 ].mode )) {
321+ if (! is_null_oid ( & entry [2 ].oid ) && !S_ISDIR (entry [2 ].mode )) {
322322 /* We did not touch, they modified -- take theirs */
323323 resolve (info , entry + 1 , entry + 2 );
324324 return mask ;
0 commit comments