Karthik Nayak <karthik....@gmail.com> writes:

> On Wed, Sep 2, 2015 at 2:37 PM, Matthieu Moy
> <matthieu....@grenoble-inp.fr> wrote:
>> Karthik Nayak <karthik....@gmail.com> writes:
>>
>>> --- a/builtin/tag.c
>>> +++ b/builtin/tag.c
>>> @@ -185,6 +185,10 @@ static enum contains_result contains(struct commit 
>>> *candidate,
>>>       return contains_test(candidate, want);
>>>  }
>>>
>>> +/*
>>> + * Currently modified and used in ref-filter as append_lines(), will
>>> + * eventually be removed as we port tag.c to use ref-filter APIs.
>>> + */
>>>  static void show_tag_lines(const struct object_id *oid, int lines)
>>
>> I would rather have one "cut and paste" patch followed by a "modify and
>> use" patch for review.
>>
>> As-is, reading the patch doesn't tell me what change you did.
>>
>> That said, I did get this information in the interdiff, so I won't
>> insist on that.
>
> Its only borrowed slightly, so I don't really see the need for this.
> But if you insist, we could do that .

As you prefer.

Perhaps just adapt the comment to say "Currently redundant with
ref-filter'.c's append_line ...", but that's not important.

>>> +static void append_lines(struct strbuf *out, const char *buf, unsigned 
>>> long size, int lines)
>>> +{
>>> +     int i;
>>> +     const char *sp, *eol;
>>> +     size_t len;
>>> +
>>> +     if ((sp = strstr(buf, "\n\n")) && (sp <= buf + size))
>>> +             size += 2;
>>
>> Why is this "size += 2" needed?
>>
>
> We pass size as "sublen + bodylen - siglen" if there exists a "\n\n"
> between sublen and bodylen this is not accounted for. hence we
> add 2 here.

That's too much magic for uncommented code. If this is really needed,
then thes explanations should go in a comment, and I think this logic
should be moved out of append_lines (if you read the comment above, the
function, it is actually lying about what the function does).

I think you can simplify this: you know where the buffer ends (bodypos +
bodylen) and where it starts (subpos), so you know the size: bodypos +
bodylen - subpos.

IOW, I think you can apply this:

--- a/ref-filter.c
+++ b/ref-filter.c
@@ -645,9 +645,6 @@ static void append_lines(struct strbuf *out, const char 
*buf, unsigned long size
        const char *sp, *eol;
        size_t len;
 
-       if ((sp = strstr(buf, "\n\n")) && (sp <= buf + size))
-               size += 2;
-
        sp = buf;
 
        for (i = 0; i < lines && sp < buf + size; i++) {
@@ -707,7 +704,7 @@ static void grab_sub_body_contents(struct atom_value *val, 
int deref, struct obj
                        struct strbuf s = STRBUF_INIT;
                        if (strtoul_ui(valp, 10, &v->u.contents.lines))
                                die(_("positive width expected 
contents:lines=%s"), valp);
-                       append_lines(&s, subpos, sublen + bodylen - siglen, 
v->u.contents.lines);
+                       append_lines(&s, subpos, bodypos + bodylen - subpos, 
v->u.contents.lines);
                        v->s = strbuf_detach(&s, NULL);
                }
        }

(half-tested only)

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to