Am 20.09.19 um 20:13 schrieb SZEDER Gábor: >>> @@ -280,12 +269,16 @@ static int name_ref(const char *path, const struct object_id *oid, int flags, vo >>> if (o && o->type == OBJ_COMMIT) { >>> struct commit *commit = (struct commit *)o; >>> int from_tag = starts_with(path, "refs/tags/"); >>> + const char *tip_name; >> >> This should not be const because you allocate the buffer it points to >> right here in the function, in each execution path. > > Marking it as const indicates that this function doesn't modify the > buffer where the pointer points at. Right, and that's at odds with this code: >>> + if (deref) >>> + tip_name = xstrfmt("%s^0", path); >>> + else >>> + tip_name = xstrdup(path); ... which allocates said memory and writes a string to it. René