return PL_strdup("???");
return nsCRT::strdup("???");
MimeGetStringByIDREAL(PRInt32 stringID){  nsresult    res = NS_OK;  char*       propertyURL;  NS_WITH_SERVICE(nsIPref, prefs, kPrefCID, &res);   if (NS_SUCCEEDED(res) && prefs)    res = prefs->CopyCharPref("mail.strings.mime", &propertyURL);  if (!NS_SUCCEEDED(res) || !prefs)    propertyURL = MIME_URL;  nsCOMPtr<nsIURI> pURI;  NS_WITH_SERVICE(nsIIOService, pService, kIOServiceCID, &res);  if (NS_FAILED(res))   {    if (propertyURL != MIME_URL)      PR_FREEIF(propertyURL);    return PL_strdup("???");   // Don't I18N this string...failsafe return value  }  res = pService->NewURI(propertyURL, nsnull, getter_AddRefs(pURI));  NS_WITH_SERVICE(nsIStringBundleService, sBundleService, kStringBundleServiceCID, &res);   if (NS_SUCCEEDED(res) && (nsnull != sBundleService))   {    nsILocale   *locale = nsnull;    nsIStringBundle* sBundle = nsnull;    res = sBundleService->CreateBundle(propertyURL, locale, &sBundle);    if (NS_FAILED(res))     {      return PL_strdup("???");   // Don't I18N this string...failsafe return value    }    nsAutoString v("");#if 1    PRUnichar *ptrv = nsnull;    res = sBundle->GetStringFromID(stringID, &ptrv);    v = ptrv;#else    res = sBundle->GetStringFromID(stringID, v);#endif	NS_RELEASE(sBundle);    if (NS_FAILED(res))     {      char    buf[128];      PR_snprintf(buf, sizeof(buf), "[StringID %d?]", stringID);      return PL_strdup(buf);    }    // Here we need to return a new copy of the string    char      *returnBuffer = NULL;    PRInt32   bufferLen = v.Length() + 1;    returnBuffer = (char *)PR_MALLOC(bufferLen);    if (returnBuffer)    {      v.ToCString(returnBuffer, bufferLen);      return returnBuffer;    }  }  return PL_strdup("???");   // Don't I18N this string...failsafe return value}