From: Ramsay Jones Date: Tue, 26 Aug 2014 11:48:24 GMT Subject: Re: [PATCH 1/3] log-tree: make add_name_decoration a public function Message-ID: <53FC7408.1030708@ramsay1.demon.co.uk> In-Reply-To: <20140826102335.GA25687@peff.net> On 26/08/14 11:23, Jeff King wrote: > 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 eb3005e (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 structi s/structi/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 not we s/not/now/ > format it into a temporary buffer and copy it to the final > flex-array). > > Signed-off-by: Jeff King ATB, Ramsay Jones