]> git.ipfire.org Git - thirdparty/git.git/blobdiff - fsmonitor.c
Merge branch 'jh/fsmonitor-prework'
[thirdparty/git.git] / fsmonitor.c
index e12214b30071e7241fb3c2f37c1457954495161c..23f8a0c97ebb4b6e5829a70e0fd9da344f710eae 100644 (file)
 
 struct trace_key trace_fsmonitor = TRACE_KEY_INIT(FSMONITOR);
 
+static void assert_index_minimum(struct index_state *istate, size_t pos)
+{
+       if (pos > istate->cache_nr)
+               BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
+                   (uintmax_t)pos, istate->cache_nr);
+}
+
 static void fsmonitor_ewah_callback(size_t pos, void *is)
 {
        struct index_state *istate = (struct index_state *)is;
        struct cache_entry *ce;
 
-       if (pos >= istate->cache_nr)
-               BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" >= %u)",
-                   (uintmax_t)pos, istate->cache_nr);
+       assert_index_minimum(istate, pos + 1);
 
        ce = istate->cache[pos];
        ce->ce_flags &= ~CE_FSMONITOR_VALID;
@@ -82,10 +87,8 @@ int read_fsmonitor_extension(struct index_state *istate, const void *data,
        }
        istate->fsmonitor_dirty = fsmonitor_dirty;
 
-       if (!istate->split_index &&
-           istate->fsmonitor_dirty->bit_size > istate->cache_nr)
-               BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
-                   (uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
+       if (!istate->split_index)
+               assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
 
        trace2_data_string("index", NULL, "extension/fsmn/read/token",
                           istate->fsmonitor_last_update);
@@ -114,10 +117,8 @@ void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate)
        uint32_t ewah_size = 0;
        int fixup = 0;
 
-       if (!istate->split_index &&
-           istate->fsmonitor_dirty->bit_size > istate->cache_nr)
-               BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
-                   (uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
+       if (!istate->split_index)
+               assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
 
        put_be32(&hdr_version, INDEX_EXTENSION_VERSION2);
        strbuf_add(sb, &hdr_version, sizeof(uint32_t));
@@ -420,9 +421,7 @@ void tweak_fsmonitor(struct index_state *istate)
                        }
 
                        /* Mark all previously saved entries as dirty */
-                       if (istate->fsmonitor_dirty->bit_size > istate->cache_nr)
-                               BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
-                                   (uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
+                       assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
                        ewah_each_bit(istate->fsmonitor_dirty, fsmonitor_ewah_callback, istate);
 
                        refresh_fsmonitor(istate);