Fix for bug #329760: ENDER: Loading multi-part mime into Ender leaves tmp

files around.
Files touched:

    include/edt.h
    lib/layout/edtbuf.cpp
    lib/layout/edtlist.cpp
    lib/mailto/mprdecod.cpp
This commit is contained in:
kin%netscape.com 1998-10-21 20:37:43 +00:00
parent 973c0f25a5
commit 14c70663f3
4 changed files with 33 additions and 12 deletions

View File

@ -1479,6 +1479,7 @@ void EDT_SetEmbeddedEditorData(MWContext *pContext, void *pData);
#ifdef MOZ_ENDER_MIME #ifdef MOZ_ENDER_MIME
XP_Bool EDT_URLOnSafeList(void *id, const char *url_str); XP_Bool EDT_URLOnSafeList(void *id, const char *url_str);
int32 EDT_AddURLToSafeList(void *id, const char *url_str); int32 EDT_AddURLToSafeList(void *id, const char *url_str);
int32 EDT_AddTmpFileURLToSafeList(void *id, const char *url_str, const char *path);
int32 EDT_RemoveURLFromSafeList(void *id, const char *url_str); int32 EDT_RemoveURLFromSafeList(void *id, const char *url_str);
int32 EDT_RemoveIDFromSafeList(void *id); int32 EDT_RemoveIDFromSafeList(void *id);
int32 EDT_DestroySafeList(); int32 EDT_DestroySafeList();

View File

@ -10241,8 +10241,9 @@ void CEditBuffer::ReadMimeFromBuffer(XP_HUGE_CHAR_PTR pBuffer){
t_part = t_decoder.getPart(i); t_part = t_decoder.getPart(i);
if (t_part) if (t_part)
{ {
EDT_AddURLToSafeList(m_pEmbeddedData, EDT_AddTmpFileURLToSafeList(m_pEmbeddedData,
t_part->getUrlFileName()); t_part->getUrlFileName(),
t_part->getFileName());
} }
} }
} }

View File

@ -408,24 +408,36 @@ class SafeListElement : public LListElement
{ {
public: public:
void *m_pID; void *m_pID;
char *m_pTmpFilePath;
int32 m_iRefCount; int32 m_iRefCount;
SafeListElement(void *id, const char *url_str) : LListElement() SafeListElement(void *id, const char *url_str, const char *path=0)
: LListElement(), m_pTmpFilePath(0)
{ {
if (url_str) if (url_str)
m_pData = (void *)XP_STRDUP(url_str); m_pData = (void *)XP_STRDUP(url_str);
if (path)
m_pTmpFilePath = XP_STRDUP(path);
m_pID = id; m_pID = id;
m_iRefCount = 1; m_iRefCount = 1;
} }
~SafeListElement() virtual ~SafeListElement()
{ {
if (m_pTmpFilePath)
{
XP_FileRemove(m_pTmpFilePath, xpFileToPost);
XP_FREE(m_pTmpFilePath);
}
if (m_pData) if (m_pData)
XP_FREE(m_pData); XP_FREE(m_pData);
m_pData = 0; m_pData = 0;
m_pID = 0; m_pID = 0;
m_pTmpFilePath = 0;
} }
XP_Bool match(void *id, const char *url_str) XP_Bool match(void *id, const char *url_str)
@ -442,6 +454,7 @@ public:
fprintf(stdout, "this: 0x%.8x\n", this); fprintf(stdout, "this: 0x%.8x\n", this);
fprintf(stdout, " id: 0x%.8x\n", m_pID); fprintf(stdout, " id: 0x%.8x\n", m_pID);
fprintf(stdout, " url_str: %s\n", (char *)m_pData); fprintf(stdout, " url_str: %s\n", (char *)m_pData);
fprintf(stdout, " path: %s\n", m_pTmpFilePath ? m_pTmpFilePath : "0");
fprintf(stdout, " count: %d\n", m_iRefCount); fprintf(stdout, " count: %d\n", m_iRefCount);
fprintf(stdout, " prev: 0x%.8x\n", getPrev()); fprintf(stdout, " prev: 0x%.8x\n", getPrev());
fprintf(stdout, " next: 0x%.8x\n", getNext()); fprintf(stdout, " next: 0x%.8x\n", getNext());
@ -472,7 +485,7 @@ public:
return 0; return 0;
} }
int32 insert(void *id, const char *url_str) int32 insert(void *id, const char *url_str, const char *path = 0)
{ {
SafeListElement *ele = find(id, url_str); SafeListElement *ele = find(id, url_str);
@ -482,7 +495,7 @@ public:
return 0; return 0;
} }
ele = new SafeListElement(id, url_str); ele = new SafeListElement(id, url_str, path);
if (!ele) if (!ele)
return -1; return -1;
@ -570,7 +583,7 @@ EDT_URLOnSafeList( void *id, const char *url_str )
} }
extern "C" int32 extern "C" int32
EDT_AddURLToSafeList( void *id, const char *url_str ) EDT_AddTmpFileURLToSafeList( void *id, const char *url_str, const char *path )
{ {
int32 status = 0; int32 status = 0;
@ -581,7 +594,7 @@ EDT_AddURLToSafeList( void *id, const char *url_str )
return -1; return -1;
} }
status = app_safe_list->insert(id, url_str); status = app_safe_list->insert(id, url_str, path);
#ifdef DEBUG_SAFE_LIST #ifdef DEBUG_SAFE_LIST
app_safe_list->print(); app_safe_list->print();
@ -590,6 +603,12 @@ EDT_AddURLToSafeList( void *id, const char *url_str )
return status; return status;
} }
extern "C" int32
EDT_AddURLToSafeList( void *id, const char *url_str )
{
return EDT_AddTmpFileURLToSafeList(id, url_str, 0);
}
extern "C" int32 extern "C" int32
EDT_RemoveURLFromSafeList( void *id, const char *url_str ) EDT_RemoveURLFromSafeList( void *id, const char *url_str )
{ {

View File

@ -154,9 +154,9 @@ SimpleMultipartRelatedMimeDecoder::SimpleMultipartRelatedMimeDecoder(const char
SimpleMultipartRelatedMimeDecoder::~SimpleMultipartRelatedMimeDecoder() SimpleMultipartRelatedMimeDecoder::~SimpleMultipartRelatedMimeDecoder()
{ {
clear_all();
if (m_pHeaderFileName) if (m_pHeaderFileName)
XP_FileRemove(m_pHeaderFileName,xpFileToPost); XP_FileRemove(m_pHeaderFileName,xpFileToPost);
clear_all();
} }