merge-recursive: fix parsing of "diff-algorithm" option
authorJohn Keeping <john@keeping.me.uk>
Thu, 26 Sep 2013 20:02:48 +0000 (21:02 +0100)
committerJonathan Nieder <jrnieder@gmail.com>
Thu, 26 Sep 2013 20:52:16 +0000 (13:52 -0700)
The "diff-algorithm" option to the recursive merge strategy takes the
name of the algorithm as an option, but it uses strcmp on the option
string to check if it starts with "diff-algorithm=", meaning that this
options cannot actually be used.

Fix this by switching to prefixcmp. At the same time, clarify the
following line by using strlen instead of a hard-coded length, which
also makes it consistent with nearby code.

Reported-by: Luke Noel-Storr <luke.noel-storr@integrate.co.uk>
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
merge-recursive.c
index ea9dbd307c60a16f290b44964c386e566b6bc7e3..1cd511ba42261cc91b97b2897f8768fa4d76b622 100644 (file)
@@ -2068,8 +2068,8 @@ int parse_merge_opt(struct merge_options *o, const char *s)
                o->xdl_opts = DIFF_WITH_ALG(o, PATIENCE_DIFF);
        else if (!strcmp(s, "histogram"))
                o->xdl_opts = DIFF_WITH_ALG(o, HISTOGRAM_DIFF);
-       else if (!strcmp(s, "diff-algorithm=")) {
-               long value = parse_algorithm_value(s+15);
+       else if (!prefixcmp(s, "diff-algorithm=")) {
+               long value = parse_algorithm_value(s + strlen("diff-algorithm="));
                if (value < 0)
                        return -1;
                /* clear out previous settings */