@@ -45,7 +45,7 @@ static int subtree_name_cmp(const char *one, int onelen,
4545 return memcmp (one , two , onelen );
4646}
4747
48- static int subtree_pos (struct cache_tree * it , const char * path , int pathlen )
48+ int cache_tree_subtree_pos (struct cache_tree * it , const char * path , int pathlen )
4949{
5050 struct cache_tree_sub * * down = it -> down ;
5151 int lo , hi ;
@@ -72,7 +72,7 @@ static struct cache_tree_sub *find_subtree(struct cache_tree *it,
7272 int create )
7373{
7474 struct cache_tree_sub * down ;
75- int pos = subtree_pos (it , path , pathlen );
75+ int pos = cache_tree_subtree_pos (it , path , pathlen );
7676 if (0 <= pos )
7777 return it -> down [pos ];
7878 if (!create )
@@ -123,7 +123,7 @@ static int do_invalidate_path(struct cache_tree *it, const char *path)
123123 it -> entry_count = -1 ;
124124 if (!* slash ) {
125125 int pos ;
126- pos = subtree_pos (it , path , namelen );
126+ pos = cache_tree_subtree_pos (it , path , namelen );
127127 if (0 <= pos ) {
128128 cache_tree_free (& it -> down [pos ]-> cache_tree );
129129 free (it -> down [pos ]);
@@ -151,16 +151,15 @@ void cache_tree_invalidate_path(struct index_state *istate, const char *path)
151151 istate -> cache_changed |= CACHE_TREE_CHANGED ;
152152}
153153
154- static int verify_cache (struct cache_entry * * cache ,
155- int entries , int flags )
154+ static int verify_cache (struct index_state * istate , int flags )
156155{
157- int i , funny ;
156+ unsigned i , funny ;
158157 int silent = flags & WRITE_TREE_SILENT ;
159158
160159 /* Verify that the tree is merged */
161160 funny = 0 ;
162- for (i = 0 ; i < entries ; i ++ ) {
163- const struct cache_entry * ce = cache [i ];
161+ for (i = 0 ; i < istate -> cache_nr ; i ++ ) {
162+ const struct cache_entry * ce = istate -> cache [i ];
164163 if (ce_stage (ce )) {
165164 if (silent )
166165 return -1 ;
@@ -180,13 +179,13 @@ static int verify_cache(struct cache_entry **cache,
180179 * stage 0 entries.
181180 */
182181 funny = 0 ;
183- for (i = 0 ; i < entries - 1 ; i ++ ) {
182+ for (i = 0 ; i + 1 < istate -> cache_nr ; i ++ ) {
184183 /* path/file always comes after path because of the way
185184 * the cache is sorted. Also path can appear only once,
186185 * which means conflicting one would immediately follow.
187186 */
188- const struct cache_entry * this_ce = cache [i ];
189- const struct cache_entry * next_ce = cache [i + 1 ];
187+ const struct cache_entry * this_ce = istate -> cache [i ];
188+ const struct cache_entry * next_ce = istate -> cache [i + 1 ];
190189 const char * this_name = this_ce -> name ;
191190 const char * next_name = next_ce -> name ;
192191 int this_len = ce_namelen (this_ce );
@@ -436,16 +435,20 @@ static int update_one(struct cache_tree *it,
436435
437436int cache_tree_update (struct index_state * istate , int flags )
438437{
439- struct cache_tree * it = istate -> cache_tree ;
440- struct cache_entry * * cache = istate -> cache ;
441- int entries = istate -> cache_nr ;
442- int skip , i = verify_cache (cache , entries , flags );
438+ int skip , i ;
439+
440+ i = verify_cache (istate , flags );
443441
444442 if (i )
445443 return i ;
444+
445+ if (!istate -> cache_tree )
446+ istate -> cache_tree = cache_tree ();
447+
446448 trace_performance_enter ();
447449 trace2_region_enter ("cache_tree" , "update" , the_repository );
448- i = update_one (it , cache , entries , "" , 0 , & skip , flags );
450+ i = update_one (istate -> cache_tree , istate -> cache , istate -> cache_nr ,
451+ "" , 0 , & skip , flags );
449452 trace2_region_leave ("cache_tree" , "update" , the_repository );
450453 trace_performance_leave ("cache_tree_update" );
451454 if (i < 0 )
@@ -635,9 +638,6 @@ static int write_index_as_tree_internal(struct object_id *oid,
635638 cache_tree_valid = 0 ;
636639 }
637640
638- if (!index_state -> cache_tree )
639- index_state -> cache_tree = cache_tree ();
640-
641641 if (!cache_tree_valid && cache_tree_update (index_state , flags ) < 0 )
642642 return WRITE_TREE_UNMERGED_INDEX ;
643643
0 commit comments