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