X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=xutil.c;h=5f98f3f7e9b83135679c801b01d898345f8c37f4;hp=26761d78e8914511a148a5fc2197175907ce2f69;hb=59b251ef940609dac7e17528065a39544463e0b4;hpb=7b227a6bf7eb409b4353adc430b2545166e0c4cd diff --git a/xutil.c b/xutil.c index 26761d78..5f98f3f7 100644 --- a/xutil.c +++ b/xutil.c @@ -18,7 +18,6 @@ * Author: Carl Worth */ -#define _GNU_SOURCE /* For strndup */ #include "notmuch-private.h" #include @@ -84,11 +83,16 @@ xstrndup (const char *s, size_t n) { char *ret; - ret = strndup (s, n); + if (strlen (s) <= n) + n = strlen (s); + + ret = malloc (n + 1); if (ret == NULL) { fprintf (stderr, "Out of memory.\n"); exit (1); } + memcpy (ret, s, n); + ret[n] = '\0'; return ret; } @@ -104,8 +108,9 @@ xregcomp (regex_t *preg, const char *regex, int cflags) char *error = xmalloc (error_size); regerror (rerr, preg, error, error_size); - INTERNAL_ERROR ("compiling regex %s: %s\n", - regex, error); + fprintf (stderr, "Internal error: compiling regex %s: %s\n", + regex, error); + exit (1); } } @@ -113,16 +118,20 @@ int xregexec (const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags) { - int i, rerr; + unsigned int i; + int rerr; rerr = regexec (preg, string, nmatch, pmatch, eflags); if (rerr) return rerr; for (i = 0; i < nmatch; i++) { - if (pmatch[i].rm_so == -1) - INTERNAL_ERROR ("matching regex against %s: Sub-match %d not found\n", - string, i); + if (pmatch[i].rm_so == -1) { + fprintf (stderr, "Internal error: matching regex against %s:" + "Sub-match %d not found\n", + string, i); + exit (1); + } } return 0;