[pacman-dev] [PATCH] Avoid depending on side effects in assert(...) expressions
Allan McRae
allan at archlinux.org
Thu May 14 05:44:30 UTC 2020
On 14/5/20 4:43 am, Dave Reisner wrote:
> When building with -DNDEBUG, assert statements are compiled out to
> no-ops. Thus, we can't depend on assignments or other computations
> occurring inside the assert().
> ---
Thanks.
> It's perhaps worth mentioning that nowhere else in the ALPM codebase
> do we use assert().
Yes - but we really don't have a way to pass back from our callback to
libalpm. So I am happy with the "shit hit the fan" approach until that
changes.
> src/pacman/callback.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/src/pacman/callback.c b/src/pacman/callback.c
> index 25909e02..4240a779 100644
> --- a/src/pacman/callback.c
> +++ b/src/pacman/callback.c
> @@ -862,12 +862,14 @@ static void dload_progress_event(const char *filename, alpm_download_event_progr
> int64_t curr_time = get_time_ms();
> double last_chunk_rate;
> int64_t timediff;
> + bool ok;
>
> if(!dload_progressbar_enabled()) {
> return;
> }
>
> - assert(find_bar_for_filename(filename, &index, &bar));
> + ok = find_bar_for_filename(filename, &index, &bar);
> + assert(ok);
>
> /* compute current average values */
> timediff = curr_time - bar->sync_time;
> @@ -902,12 +904,14 @@ static void dload_complete_event(const char *filename, alpm_download_event_compl
> int index;
> struct pacman_progress_bar *bar;
> int64_t timediff;
> + bool ok;
>
> if(!dload_progressbar_enabled()) {
> return;
> }
>
> - assert(find_bar_for_filename(filename, &index, &bar));
> + ok = find_bar_for_filename(filename, &index, &bar);
> + assert(ok);
> bar->completed = true;
>
> /* This may not have been initialized if the download finished before
>
More information about the pacman-dev
mailing list