diffcore-pickaxe: Add regcomp_or_die()
There's another regcomp code block coming in this function that needs the same error handling. This function can help avoid duplicating error handling code. Helped-by: Jeff King <peff@peff.com> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
18547aacf5
commit
3d5b23a362
@ -198,6 +198,18 @@ static void pickaxe(struct diff_queue_struct *q, struct diff_options *o,
|
||||
*q = outq;
|
||||
}
|
||||
|
||||
static void regcomp_or_die(regex_t *regex, const char *needle, int cflags)
|
||||
{
|
||||
int err = regcomp(regex, needle, cflags);
|
||||
if (err) {
|
||||
/* The POSIX.2 people are surely sick */
|
||||
char errbuf[1024];
|
||||
regerror(err, regex, errbuf, 1024);
|
||||
regfree(regex);
|
||||
die("invalid regex: %s", errbuf);
|
||||
}
|
||||
}
|
||||
|
||||
void diffcore_pickaxe(struct diff_options *o)
|
||||
{
|
||||
const char *needle = o->pickaxe;
|
||||
@ -206,18 +218,10 @@ void diffcore_pickaxe(struct diff_options *o)
|
||||
kwset_t kws = NULL;
|
||||
|
||||
if (opts & (DIFF_PICKAXE_REGEX | DIFF_PICKAXE_KIND_G)) {
|
||||
int err;
|
||||
int cflags = REG_EXTENDED | REG_NEWLINE;
|
||||
if (DIFF_OPT_TST(o, PICKAXE_IGNORE_CASE))
|
||||
cflags |= REG_ICASE;
|
||||
err = regcomp(®ex, needle, cflags);
|
||||
if (err) {
|
||||
/* The POSIX.2 people are surely sick */
|
||||
char errbuf[1024];
|
||||
regerror(err, ®ex, errbuf, 1024);
|
||||
regfree(®ex);
|
||||
die("invalid regex: %s", errbuf);
|
||||
}
|
||||
regcomp_or_die(®ex, needle, cflags);
|
||||
regexp = ®ex;
|
||||
} else {
|
||||
kws = kwsalloc(DIFF_OPT_TST(o, PICKAXE_IGNORE_CASE)
|
||||
|
Loading…
Reference in New Issue
Block a user