More memory clean-ups
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2901 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
8380534b1d
commit
41808c26be
7 changed files with 48 additions and 9 deletions
|
@ -210,7 +210,7 @@ CDialogTemplate::~CDialogTemplate() {
|
|||
if (m_szTitle)
|
||||
delete [] m_szTitle;
|
||||
if (m_szFont)
|
||||
delete [] m_szTitle;
|
||||
delete [] m_szFont;
|
||||
|
||||
for (unsigned int i = 0; i < m_vItems.size(); i++) {
|
||||
if (m_vItems[i]->szClass && !IS_INTRESOURCE(m_vItems[i]->szClass))
|
||||
|
|
|
@ -24,6 +24,17 @@ struct version_string_list {
|
|||
class CVersionStrigList : public SortedStringListND<struct version_string_list>
|
||||
{
|
||||
public:
|
||||
~CVersionStrigList()
|
||||
{
|
||||
struct version_string_list *itr = (struct version_string_list *) gr.get();
|
||||
int i = gr.getlen() / sizeof(struct version_string_list);
|
||||
|
||||
while (i--)
|
||||
{
|
||||
delete itr[i].pChildStrings;
|
||||
}
|
||||
}
|
||||
|
||||
int add(LANGID langid, int codepage)
|
||||
{
|
||||
char Buff[10];
|
||||
|
|
|
@ -412,7 +412,7 @@ int CEXEBuild::getcurdbsize() { return cur_datablock->getlen(); }
|
|||
|
||||
int CEXEBuild::add_string(const char *string, int process/*=1*/) // returns offset in stringblock
|
||||
{
|
||||
if (!*string) return 0;
|
||||
if (!string || !*string) return 0;
|
||||
|
||||
if (*string == '$' && *(string+1) == '(') {
|
||||
int idx = 0;
|
||||
|
|
|
@ -842,10 +842,13 @@ LanguageTable * CEXEBuild::LoadLangFile(char *filename) {
|
|||
}
|
||||
|
||||
void CEXEBuild::DeleteLangTable(LanguageTable *table) {
|
||||
free(table->nlf.m_szName);
|
||||
free(table->nlf.m_szFont);
|
||||
free(table->lang_strings);
|
||||
if (table->nlf.m_szName)
|
||||
free(table->nlf.m_szName);
|
||||
if (table->nlf.m_szFont)
|
||||
free(table->nlf.m_szFont);
|
||||
delete table->lang_strings;
|
||||
for (int i = 0; i < NLF_STRINGS; i++) {
|
||||
free(table->nlf.m_szStrings[i]);
|
||||
if (table->nlf.m_szStrings[i])
|
||||
free(table->nlf.m_szStrings[i]);
|
||||
}
|
||||
}
|
|
@ -1205,6 +1205,11 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
|||
}
|
||||
rewind(fp);
|
||||
char *data=(char*)malloc(datalen+2);
|
||||
if (!data)
|
||||
{
|
||||
ERROR_MSG("Internal compiler error #12345: LicenseData malloc(%d) failed.\n", datalen+2);
|
||||
return PS_ERROR;
|
||||
}
|
||||
char *ldata=data+1;
|
||||
if (fread(ldata,1,datalen,fp) != datalen)
|
||||
{
|
||||
|
@ -1220,6 +1225,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
|||
*data = SF_TEXT;
|
||||
|
||||
int ret = SetLangString(name, lang, data);
|
||||
free(data);
|
||||
if (ret == PS_WARNING)
|
||||
warning_fl("LicenseLangString \"%s\" set multiple times for %d, wasting space", name, lang);
|
||||
else if (ret == PS_ERROR)
|
||||
|
@ -1483,10 +1489,16 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
|||
}
|
||||
rewind(fp);
|
||||
data=(char*)malloc(datalen+2);
|
||||
if (!data)
|
||||
{
|
||||
ERROR_MSG("Internal compiler error #12345: LicenseData malloc(%d) failed.\n", datalen+2);
|
||||
return PS_ERROR;
|
||||
}
|
||||
char *ldata=data+1;
|
||||
if (fread(ldata,1,datalen,fp) != datalen) {
|
||||
ERROR_MSG("LicenseData: can't read file.\n");
|
||||
fclose(fp);
|
||||
free(data);
|
||||
return PS_ERROR;
|
||||
}
|
||||
fclose(fp);
|
||||
|
@ -1509,6 +1521,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
|||
|
||||
cur_page->parms[1] = add_string(data, 0);
|
||||
}
|
||||
|
||||
if (!idx)
|
||||
free(data);
|
||||
|
||||
SCRIPT_MSG("LicenseData: \"%s\"\n",file);
|
||||
}
|
||||
return make_sure_not_in_secorfunc(line.gettoken_str(0), 1);
|
||||
|
|
|
@ -181,7 +181,8 @@ class SortedStringList
|
|||
int num=gr.getlen()/sizeof(T);
|
||||
|
||||
for (int i=0; i<num; i++) {
|
||||
free(s[i].name);
|
||||
if (s[i].name)
|
||||
free(s[i].name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -84,6 +84,8 @@ int update_bitmap(CResourceEditor* re, WORD id, char* filename, int width/*=0*/,
|
|||
|
||||
re->UpdateResource(RT_BITMAP, MAKEINTRESOURCE(id), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), bitmap, dwSize);
|
||||
|
||||
free(bitmap);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -158,9 +160,15 @@ int replace_icon(CResourceEditor* re, WORD wIconId, char* filename)
|
|||
fpos_t pos;
|
||||
fgetpos(f, &pos);
|
||||
|
||||
if (fseek(f, dwOffset, SEEK_SET)) return -1;
|
||||
if (fseek(f, dwOffset, SEEK_SET)) {
|
||||
free(rsrcIconGroup);
|
||||
return -1;
|
||||
}
|
||||
BYTE* iconData = (BYTE*)malloc(ige->dwRawSize);
|
||||
if (!iconData) throw bad_alloc();
|
||||
if (!iconData) {
|
||||
free(rsrcIconGroup);
|
||||
throw bad_alloc();
|
||||
}
|
||||
fread(iconData, sizeof(BYTE), ige->dwRawSize, f);
|
||||
re->UpdateResource(RT_ICON, MAKEINTRESOURCE(i+1), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), iconData, ige->dwRawSize);
|
||||
free(iconData);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue