printf("Setting Length [%s] at %d\n", cbs->text->ptr, cbs->currInsert);
PRINTF("Setting Length [%s] at %d\n", cbs->text->ptr, cbs->currInsert);
void nsXtWidget_Text_Callback(Widget w, XtPointer p, XtPointer call_data){  int len;  XmTextVerifyCallbackStruct *cbs = (XmTextVerifyCallbackStruct *) call_data;  PasswordData * data;  XtVaGetValues(w, XmNuserData, &data, NULL);  if (data == NULL || data->mIgnore) {    return;  }  if (cbs->reason == XmCR_ACTIVATE) {    char* password = data->mPassword.ToNewCString();    printf ("Password: %s\n", password);    delete[] password;    return;  }  if (cbs->startPos < cbs->currInsert) {   /* backspace */      cbs->endPos = data->mPassword.Length();  /* delete from here to end */      data->mPassword.SetLength(cbs->startPos); /* backspace--terminate */      return;  }  if (cbs->startPos == cbs->currInsert && cbs->currInsert < data->mPassword.Length()) {    nsString insStr(cbs->text->ptr);    data->mPassword.Insert(insStr, cbs->currInsert, strlen(cbs->text->ptr));  } else if (cbs->startPos == cbs->currInsert && cbs->endPos != cbs->startPos) {    data->mPassword.SetLength(cbs->startPos);    printf("Setting Length [%s] at %d\n", cbs->text->ptr, cbs->currInsert);  } else if (cbs->startPos == cbs->currInsert) {   /* backspace */    data->mPassword.Append(cbs->text->ptr);  }     for (len = 0; len < cbs->text->length; len++)    cbs->text->ptr[len] = '*';}