X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fparse-duration.c;h=0a8c4ada8408e187952e636b4441409cd36f4669;hb=21492d6c3ca00ff0827528640804732f2ed66470;hp=8c281330a40677a34375ae100fad0e3d1e9e1e37;hpb=d60f3b0c6b0f93a601acd1cfd3923f94ca05abb0;p=gnulib.git diff --git a/lib/parse-duration.c b/lib/parse-duration.c index 8c281330a..0a8c4ada8 100644 --- a/lib/parse-duration.c +++ b/lib/parse-duration.c @@ -26,7 +26,6 @@ #include #include #include -#include "xalloc.h" #ifndef NUL #define NUL '\0' @@ -381,7 +380,7 @@ parse_time (cch_t * pz) } /* Returns a substring of the given string, with spaces at the beginning and at - the end destructively removed. */ + the end destructively removed, per SNOBOL. */ static char * trim (char * pz) { @@ -406,13 +405,20 @@ trim (char * pz) static time_t parse_period (cch_t * in_pz) { - char * pz = xstrdup (in_pz); - char * pT = strchr (pz, 'T'); + char * pT; char * ps; + char * pz = strdup (in_pz); void * fptr = pz; time_t res = 0; - if (pT != NUL) + if (pz == NULL) + { + errno = ENOMEM; + return BAD_TIME; + } + + pT = strchr (pz, 'T'); + if (pT != NULL) { *(pT++) = NUL; pz = trim (pz);