]> git.ipfire.org Git - thirdparty/git.git/commitdiff
run_processes_parallel: change confusing task_cb convention
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Wed, 19 Jul 2017 14:56:19 +0000 (16:56 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Jul 2017 18:58:46 +0000 (11:58 -0700)
By declaring the task_cb parameter of type `void **`, the signature of
the get_next_task method suggests that the "task-specific cookie" can be
defined in that method, and the signatures of the start_failure and of
the task_finished methods declare that parameter of type `void *`,
suggesting that those methods are mere users of said cookie.

That convention makes a total lot of sense, because the tasks are pretty
much dead when one of the latter two methods is called: there would be
little use to reset that cookie at that point because nobody would be
able to see the change afterwards.

However, this is not what the code actually does. For all three methods,
it passes the *address* of pp->children[i].data.

As reasoned above, this behavior makes no sense. So let's change the
implementation to adhere to the convention suggested by the signatures.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/submodule--helper.c
run-command.c

index dbe5699fe688faeec3bdad899f229746b96be57f..b0ca2a548f47ca9c264cb29dea7a1414b4ebb7ce 100644 (file)
@@ -781,7 +781,7 @@ static int update_clone_task_finished(int result,
        const struct cache_entry *ce;
        struct submodule_update_clone *suc = suc_cb;
 
-       int *idxP = *(int**)idx_task_cb;
+       int *idxP = idx_task_cb;
        int idx = *idxP;
        free(idxP);
 
index 5a4dbb66d7e4d4ed4bd6cf319f132c1b4d870572..038d0e837cdde1bd1f529ec8c3e57cbf187a646a 100644 (file)
@@ -1184,7 +1184,7 @@ static int pp_start_one(struct parallel_processes *pp)
        if (start_command(&pp->children[i].process)) {
                code = pp->start_failure(&pp->children[i].err,
                                         pp->data,
-                                        &pp->children[i].data);
+                                        pp->children[i].data);
                strbuf_addbuf(&pp->buffered_output, &pp->children[i].err);
                strbuf_reset(&pp->children[i].err);
                if (code)
@@ -1252,7 +1252,7 @@ static int pp_collect_finished(struct parallel_processes *pp)
 
                code = pp->task_finished(code,
                                         &pp->children[i].err, pp->data,
-                                        &pp->children[i].data);
+                                        pp->children[i].data);
 
                if (code)
                        result = code;