if (dialogTitle == nsnull)
if (dialogTitle == nsnull || nsCRT::strlen(dialogTitle) == 0)
si_CheckGetData  (PRUnichar ** data,   const PRUnichar* dialogTitle,   const PRUnichar * szMessage,   nsIPrompt* dialog,   PRUint32 savePassword,   PRBool* checkValue){  nsresult res;    PRInt32 buttonPressed = 1; /* in case user exits dialog by clickin X */  PRUnichar * prompt_string = (PRUnichar*)dialogTitle;  if (dialogTitle == nsnull || nsCRT::strlen(dialogTitle) == 0)    prompt_string = Wallet_Localize("PromptForData");  PRUnichar * check_string;  if (savePassword != SINGSIGN_SAVE_PASSWORD_PERMANENTLY) {    check_string = nsnull;  } else if (SI_GetBoolPref(pref_Crypto, PR_FALSE)) {    check_string = Wallet_Localize("SaveThisValueEncrypted");  } else {    check_string = Wallet_Localize("SaveThisValueObscured");  }  res = dialog->UniversalDialog(    NULL, /* title message */    prompt_string, /* title text in top line of window */    szMessage, /* this is the main message */    check_string, /* This is the checkbox message */    NULL, /* first button text, becomes OK by default */    NULL, /* second button text, becomes CANCEL by default */    NULL, /* third button text */    NULL, /* fourth button text */    NULL, /* first edit field label */    NULL, /* second edit field label */    data, /* first edit field initial and final value */    NULL, /* second edit field initial and final value */    NULL,  /* icon: question mark by default */    checkValue, /* initial and final value of checkbox */    2, /* number of buttons */    1, /* number of edit fields */    0, /* is first edit field a password field */    &buttonPressed);  if (dialogTitle == nsnull)    Recycle(prompt_string);  if (check_string)    Recycle(check_string);  else    *checkValue = PR_FALSE;  if (NS_FAILED(res)) {    return res;  }  if (buttonPressed == 0) {    return NS_OK;  } else {    return NS_ERROR_FAILURE; /* user pressed cancel */  }}