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)
|
if (m_szTitle)
|
||||||
delete [] m_szTitle;
|
delete [] m_szTitle;
|
||||||
if (m_szFont)
|
if (m_szFont)
|
||||||
delete [] m_szTitle;
|
delete [] m_szFont;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < m_vItems.size(); i++) {
|
for (unsigned int i = 0; i < m_vItems.size(); i++) {
|
||||||
if (m_vItems[i]->szClass && !IS_INTRESOURCE(m_vItems[i]->szClass))
|
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>
|
class CVersionStrigList : public SortedStringListND<struct version_string_list>
|
||||||
{
|
{
|
||||||
public:
|
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)
|
int add(LANGID langid, int codepage)
|
||||||
{
|
{
|
||||||
char Buff[10];
|
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
|
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) == '(') {
|
if (*string == '$' && *(string+1) == '(') {
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
|
|
|
@ -842,10 +842,13 @@ LanguageTable * CEXEBuild::LoadLangFile(char *filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEXEBuild::DeleteLangTable(LanguageTable *table) {
|
void CEXEBuild::DeleteLangTable(LanguageTable *table) {
|
||||||
free(table->nlf.m_szName);
|
if (table->nlf.m_szName)
|
||||||
free(table->nlf.m_szFont);
|
free(table->nlf.m_szName);
|
||||||
free(table->lang_strings);
|
if (table->nlf.m_szFont)
|
||||||
|
free(table->nlf.m_szFont);
|
||||||
|
delete table->lang_strings;
|
||||||
for (int i = 0; i < NLF_STRINGS; i++) {
|
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);
|
rewind(fp);
|
||||||
char *data=(char*)malloc(datalen+2);
|
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;
|
char *ldata=data+1;
|
||||||
if (fread(ldata,1,datalen,fp) != datalen)
|
if (fread(ldata,1,datalen,fp) != datalen)
|
||||||
{
|
{
|
||||||
|
@ -1220,6 +1225,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
*data = SF_TEXT;
|
*data = SF_TEXT;
|
||||||
|
|
||||||
int ret = SetLangString(name, lang, data);
|
int ret = SetLangString(name, lang, data);
|
||||||
|
free(data);
|
||||||
if (ret == PS_WARNING)
|
if (ret == PS_WARNING)
|
||||||
warning_fl("LicenseLangString \"%s\" set multiple times for %d, wasting space", name, lang);
|
warning_fl("LicenseLangString \"%s\" set multiple times for %d, wasting space", name, lang);
|
||||||
else if (ret == PS_ERROR)
|
else if (ret == PS_ERROR)
|
||||||
|
@ -1483,10 +1489,16 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
}
|
}
|
||||||
rewind(fp);
|
rewind(fp);
|
||||||
data=(char*)malloc(datalen+2);
|
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;
|
char *ldata=data+1;
|
||||||
if (fread(ldata,1,datalen,fp) != datalen) {
|
if (fread(ldata,1,datalen,fp) != datalen) {
|
||||||
ERROR_MSG("LicenseData: can't read file.\n");
|
ERROR_MSG("LicenseData: can't read file.\n");
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
free(data);
|
||||||
return PS_ERROR;
|
return PS_ERROR;
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
@ -1509,6 +1521,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
|
|
||||||
cur_page->parms[1] = add_string(data, 0);
|
cur_page->parms[1] = add_string(data, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!idx)
|
||||||
|
free(data);
|
||||||
|
|
||||||
SCRIPT_MSG("LicenseData: \"%s\"\n",file);
|
SCRIPT_MSG("LicenseData: \"%s\"\n",file);
|
||||||
}
|
}
|
||||||
return make_sure_not_in_secorfunc(line.gettoken_str(0), 1);
|
return make_sure_not_in_secorfunc(line.gettoken_str(0), 1);
|
||||||
|
|
|
@ -181,7 +181,8 @@ class SortedStringList
|
||||||
int num=gr.getlen()/sizeof(T);
|
int num=gr.getlen()/sizeof(T);
|
||||||
|
|
||||||
for (int i=0; i<num; i++) {
|
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);
|
re->UpdateResource(RT_BITMAP, MAKEINTRESOURCE(id), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), bitmap, dwSize);
|
||||||
|
|
||||||
|
free(bitmap);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,9 +160,15 @@ int replace_icon(CResourceEditor* re, WORD wIconId, char* filename)
|
||||||
fpos_t pos;
|
fpos_t pos;
|
||||||
fgetpos(f, &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);
|
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);
|
fread(iconData, sizeof(BYTE), ige->dwRawSize, f);
|
||||||
re->UpdateResource(RT_ICON, MAKEINTRESOURCE(i+1), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), iconData, ige->dwRawSize);
|
re->UpdateResource(RT_ICON, MAKEINTRESOURCE(i+1), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), iconData, ige->dwRawSize);
|
||||||
free(iconData);
|
free(iconData);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue