run-command: use BUG() to report bugs, not die()
The slightly misleading name die_bug() of the function intended to report a bug is actually called always, and only reports a bug if the passed-in parameter `err` is non-zero. It uses die_errno() to report the bug, to helpfully include the error message corresponding to `err`. However, as these messages indicate bugs, we really should use BUG(). And as BUG() is a macro to be able to report the exact file and line number, we need to convert die_bug() to a macro instead of only replacing the die_errno() by a call to BUG(). While at it, use a name more indicative of the purpose: CHECK_BUG(). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Schindelin committed
May 2, 2018 at 11:38 UTC
dde74d732fc3c5fa4bc4238aa935c164ff6c2dd5
1 file changed
+10
-13
run-command.c
+10
-13
@@ -471,15 +471,12 @@ struct atfork_state {
471
sigset_t old;
472
};
473
474
-#ifndef NO_PTHREADS
475
-static void bug_die(int err, const char *msg)
476
-{
477
- if (err) {
478
- errno = err;
479
- die_errno("BUG: %s", msg);
480
- }
481
-}
482
-#endif
474
+#define CHECK_BUG(err, msg) \
475
+ do { \
476
+ int e = (err); \
477
+ if (e) \
478
+ BUG("%s: %s", msg, strerror(e)); \
479
+ } while(0)
480
481
static void atfork_prepare(struct atfork_state *as)
482
{
@@ -491,9 +488,9 @@ static void atfork_prepare(struct atfork_state *as)
488
if (sigprocmask(SIG_SETMASK, &all, &as->old))
489
die_errno("sigprocmask");
490
#else
494
- bug_die(pthread_sigmask(SIG_SETMASK, &all, &as->old),
491
+ CHECK_BUG(pthread_sigmask(SIG_SETMASK, &all, &as->old),
492
"blocking all signals");
496
- bug_die(pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &as->cs),
493
+ CHECK_BUG(pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &as->cs),
494
"disabling cancellation");
495
#endif
496
}
@@ -504,9 +501,9 @@ static void atfork_parent(struct atfork_state *as)
501
if (sigprocmask(SIG_SETMASK, &as->old, NULL))
502
die_errno("sigprocmask");
503
#else
507
- bug_die(pthread_setcancelstate(as->cs, NULL),
504
+ CHECK_BUG(pthread_setcancelstate(as->cs, NULL),
505
"re-enabling cancellation");
509
- bug_die(pthread_sigmask(SIG_SETMASK, &as->old, NULL),
506
+ CHECK_BUG(pthread_sigmask(SIG_SETMASK, &as->old, NULL),
507
"restoring signal mask");
508
#endif
509
}