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
XP_Bool EDT_URLOnSafeList(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_RemoveIDFromSafeList(void *id);
int32 EDT_DestroySafeList();

View File

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

View File

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

View File

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