X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=string.c;h=fba36e5fcc6f92ca1542fd9b5989f61099ad584a;hp=156404c48ccf7036db2b875c1f1c3832a2a6f123;hb=adbf9f09c9bf2a680c61b1ef3541c04f1cde97cf;hpb=58ad3169dc1a4999ef3250753f980f168bd2f29e diff --git a/string.c b/string.c index 156404c4..fba36e5f 100644 --- a/string.c +++ b/string.c @@ -374,7 +374,8 @@ __must_check __malloc char *para_homedir(void) * This function modifies \a args by replacing each occurance of \a delim by * zero. A NULL-terminated array of pointers to char* is allocated dynamically * and these pointers are initialized to point to the broken-up substrings - * within \a args. A pointer to this array is returned via \a argv_ptr. + * within \a args. A pointer to this array is returned via \a argv_ptr. It's OK + * to call this function with \a args == NULL. * * \return The number of substrings found in \a args. */ @@ -384,11 +385,11 @@ __must_check unsigned split_args(char *args, char ***argv_ptr, int delim) char **argv; ssize_t n = 0, i; - while ((p = strchr(p, delim))) { + while (p && (p = strchr(p, delim))) { p++; n++; } - *argv_ptr = para_malloc((n + 3) * sizeof(char *)); + *argv_ptr = para_calloc((n + 3) * sizeof(char *)); argv = *argv_ptr; i = 0; p = args; @@ -404,7 +405,6 @@ __must_check unsigned split_args(char *args, char ***argv_ptr, int delim) i++; } } - argv[n + 1] = NULL; return n; }