Just curious, but where in this do you see a check for NULL? /* Create a duplicate of a string */ char *str_dup(const char *source) { char *new_z; CREATE(new_z, char, strlen(source) + 1); return (strcpy(new_z, source)); } #define CREATE(result, type, number) do {\ if ((number) * sizeof(type) <= 0) \ log("SYSERR: Zero bytes or less requested at %s:%d.", __FILE__, __LINE__); \ if (!((result) = (type *) calloc ((number), sizeof(type)))) \ { perror("SYSERR: malloc failure"); abort(); } } while(0) I've sent a NULL here and every time it crashes. Rick -----Original Message----- From: Chris Jacobson <fear@TECHNOLOGIST.COM> To: CIRCLE@post.queensu.ca <CIRCLE@post.queensu.ca> Date: Monday, March 08, 1999 3:16 PM Subject: Re: strdup or str_dup? >On 3/8/99 9:57 AM, Nocturnal Occulto (ronnyi@ifi.uio.no) stated: > >>strdup or str_dup? Which one should I use and why? > >Either, but not all systems have strdup(), hence why an Circle str_dup is >used. Plus the Circle version can catch null strings, strdup() would >crash. > >- Chris Jacobson +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST