]> git.ipfire.org Git - thirdparty/git.git/commitdiff
progress: call trace2_region_leave() only after calling _enter()
authorDerrick Stolee <dstolee@microsoft.com>
Fri, 15 May 2020 16:09:28 +0000 (09:09 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 15 May 2020 16:41:30 +0000 (09:41 -0700)
A user of progress API calls start_progress() conditionally and
depends on the display_progress() and stop_progress() functions to
become no-op when start_progress() hasn't been called.

As we added a call to trace2_region_enter() to start_progress(), the
calls to other trace2 API calls from the progress API functions must
make sure that these trace2 calls are skipped when start_progress()
hasn't been called on the progress struct.  Specifically, do not
call trace2_region_leave() from stop_progress() when we haven't
called start_progress(), which would have called the matching
trace2_region_enter().

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
progress.c

index 6d2dcff0b6920037463f217d3d699305e8ccc491..3eda914518bfdcd211552d41b5439125b1ea27ed 100644 (file)
@@ -329,13 +329,9 @@ void stop_progress(struct progress **p_progress)
                        trace2_data_intmax("progress", the_repository,
                                           "total_bytes",
                                           (*p_progress)->throughput->curr_total);
-       }
 
-       trace2_region_leave("progress",
-                           p_progress && *p_progress
-                               ? (*p_progress)->title
-                               : NULL,
-                           the_repository);
+               trace2_region_leave("progress", (*p_progress)->title, the_repository);
+       }
 
        stop_progress_msg(p_progress, _("done"));
 }