nsAllocator::Free(mask);
nsMemory::Free(mask);
nsThrobber::LoadThrobberImages(const nsString& aFileNameMask, PRInt32 aNumImages){  nsresult rv;  char url[2000];  mImages = new nsVoidArray(mNumImages);  if (nsnull == mImages) {    return NS_ERROR_OUT_OF_MEMORY;  }  rv = NS_NewImageGroup(&mImageGroup);  if (NS_OK != rv) {    return rv;  }  nsIDeviceContext *deviceCtx = mWidget->GetDeviceContext();  mImageGroup->Init(deviceCtx, nsnull);  NS_RELEASE(deviceCtx);  rv = NS_NewTimer(&mTimer);  if (NS_OK != rv) {    return rv;  }  mTimer->Init(throb_timer_callback, this, 33);    char * mask = aFileNameMask.ToNewCString();  for (PRInt32 cnt = 0; cnt < mNumImages; cnt++)  {    PR_snprintf(url, sizeof(url), mask, cnt);    nscolor bgcolor = NS_RGB(0, 0, 0);    mImages->InsertElementAt(mImageGroup->GetImage(url,                                                   (nsIImageRequestObserver *)this,                                                   &bgcolor,                                                   mWidth - 2,                                                   mHeight - 2, 0),                                                   cnt);  }  if (nsnull != mask)    nsAllocator::Free(mask);  mWidget->Invalidate(PR_TRUE);  return rv;}