• Show log

    Commit

  • Hash : 7fc97eb3
    Author : Patrick Steinhardt
    Date : 2020-01-09T14:21:41

    index: fix resizing index map twice on case-insensitive systems
    
    Depending on whether the index map is case-sensitive or insensitive, we
    need to call either `git_idxmap_icase_resize` or `git_idxmap_resize`.
    There are multiple locations where we thus use the following pattern:
    
    	if (index->ignore_case &&
    	    git_idxmap_icase_resize(map, length) < 0)
    		return -1;
    	else if (git_idxmap_resize(map, length) < 0)
    		return -1;
    
    The funny thing is: on case-insensitive systems, we will try to resize
    the map twice in case where `git_idxmap_icase_resize()` doesn't error.
    While this will still use the correct hashing function as both map types
    use the same, this bug will at least cause us to resize the map twice in
    a row.
    
    Fix the issue by introducing a new function `index_map_resize` that
    handles case-sensitivity, similar to how `index_map_set` and
    `index_map_delete`. Convert all call sites where we were previously
    resizing the map to use that new function.