Skip to content
  • Jeff King's avatar
    log-tree: make add_name_decoration a public function · 662174d2
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    The log-tree code keeps a "struct decoration" hash to show
    text decorations for each commit during log traversals. It
    makes this available to other files by providing global
    access to the hash. This can result in other code adding
    entries that do not conform to what log-tree expects.
    
    For example, the bisect code adds its own "dist"
    decorations to be shown. Originally the bisect code was
    correct, but when the name_decoration code grew a new field
    in eb3005e2
    
     (commit.h: add 'type' to struct name_decoration,
    2010-06-19), the bisect code was not updated. As a result,
    the log-tree code can access uninitialized memory and even
    segfault.
    
    We can fix this by making name_decoration's adding function
    public. If all callers use it, then any changes to struct
    initialization only need to happen in one place (and because
    the members come in as parameters, the compiler can notice a
    caller who does not supply enough information).
    
    As a bonus, this also means that the decoration hashes
    created by the bisect code will use less memory (previously
    we over-allocated space for the distance integer, but now we
    format it into a temporary buffer and copy it to the final
    flex-array).
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    662174d2