char *retVal = PL_strdup(ptr);
char *retVal = nsCRT::strdup(ptr);
FindAmbitiousMailToTag(const char *line, PRInt32 line_size){  char  *atLoc;  char  *workLine;  // Sanity...  if ( (!line) || (!*line) )    return NULL;  // Should I bother at all...  if ( !(atLoc = PL_strnchr(line, '@', line_size)) )    return NULL;  // create a working copy...  workLine = PL_strndup(line, line_size);  if (!workLine)    return NULL;  char *ptr = PL_strchr(workLine, '@');  if (!ptr)    return NULL;  *(ptr+1) = '\0';  --ptr;  while (ptr >= workLine)  {    if (IS_SPACE(*ptr) ||				  *ptr == '<' || *ptr == '>' ||          *ptr == '`' || *ptr == ')' ||          *ptr == '\'' || *ptr == '"' ||          *ptr == ']' || *ptr == '}'          )          break;    --ptr;  }  ++ptr;  if (*ptr == '@')   {    PR_FREEIF(workLine);    return NULL;  }  PRInt32           retType;  nsMimeURLUtils    util;  util.URLType(ptr, &retType);  if (retType != 0)  {    PR_FREEIF(workLine);    return NULL;  }  char *retVal = PL_strdup(ptr);  PR_FREEIF(workLine);  return retVal;}