mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 19:04:45 +00:00
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:
parent
973c0f25a5
commit
14c70663f3
@ -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();
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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 )
|
||||
{
|
||||
|
@ -154,9 +154,9 @@ SimpleMultipartRelatedMimeDecoder::SimpleMultipartRelatedMimeDecoder(const char
|
||||
|
||||
SimpleMultipartRelatedMimeDecoder::~SimpleMultipartRelatedMimeDecoder()
|
||||
{
|
||||
clear_all();
|
||||
if (m_pHeaderFileName)
|
||||
XP_FileRemove(m_pHeaderFileName,xpFileToPost);
|
||||
clear_all();
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user