• S
    fast-import: Avoid infinite loop after reset · 734c91f9
    Shawn O. Pearce 提交于
    Johannes Sixt noticed that a 'reset' command applied to a branch that
    is already active in the branch LRU cache can cause fast-import to
    relink the same branch into the LRU cache twice.  This will cause
    the LRU cache to contain a cycle, making unload_one_branch run in an
    infinite loop as it tries to select the oldest branch for eviction.
    
    I have trivially fixed the problem by adding an active bit to
    each branch object; this bit indicates if the branch is already
    in the LRU and allows us to avoid trying to add it a second time.
    Converting the pack_id field into a bitfield makes this change take
    up no additional memory.
    Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
    734c91f9
fast-import.c 50.5 KB