if (!msd->options->part_to_load)
if (!msd->options->part_to_load || msd->options->format_out == nsMimeOutput::nsMimeMessageBodyDisplay)
mime_display_stream_complete (nsMIMESession *stream){  struct mime_stream_data *msd = (struct mime_stream_data *) ((nsMIMESession *)stream)->data_object;  MimeObject *obj = (msd ? msd->obj : 0);    if (obj)  {    int       status;    PRBool    abortNow = PR_FALSE;    // Release the prefs service    if ( (obj->options) && (obj->options->prefs) )      nsServiceManager::ReleaseService(kPrefCID, obj->options->prefs);        if ((obj->options) && (obj->options->headers == MimeHeadersOnly))      abortNow = PR_TRUE;    status = obj->clazz->parse_eof(obj, abortNow);    obj->clazz->parse_end(obj, (status < 0 ? PR_TRUE : PR_FALSE));      //    // Ok, now we are going to process the attachment data by getting all    // of the attachment info and then driving the emitter with this data.    //    if (!msd->options->part_to_load)    {      nsMsgAttachmentData *attachments;      nsresult rv = MimeGetAttachmentList(obj, msd->url_name, &attachments);      if (NS_SUCCEEDED(rv))      {        NotifyEmittersOfAttachmentList(msd->options, attachments);        MimeFreeAttachmentList(attachments);      }    }    // Release the conversion object - this has to be done after    // we finish processing data.    if ( obj->options)    {      NS_IF_RELEASE(obj->options->conv);    }    // Destroy the object now.    PR_ASSERT(msd->options == obj->options);    mime_free(obj);    obj = NULL;    if (msd->options)    {      delete msd->options;      msd->options = 0;    }  }  if (msd->headers)  	MimeHeaders_free (msd->headers);  if (msd->url_name)	  nsCRT::free(msd->url_name);  if (msd->orig_url_name)      nsCRT::free(msd->orig_url_name);  PR_FREEIF(msd);}