diff --git a/Source/exehead/exec.c b/Source/exehead/exec.c index 859c7b30..65aee770 100644 --- a/Source/exehead/exec.c +++ b/Source/exehead/exec.c @@ -224,23 +224,16 @@ static int NSISCALL ExecuteEntry(entry *entry_) case EW_CREATEDIR: { char *buf1=GetStringFromParm(-0x10); log_printf3("CreateDirectory: \"%s\" (%d)",buf1,parm1); - if (parm1) - { - update_status_text(LANG_OUTPUTDIR,buf1); - mystrcpy(state_output_directory,buf1); - SetCurrentDirectory(buf1); - } - else update_status_text(LANG_CREATEDIR,buf1); { char *tp=CharNext(buf1); char *p=buf1; - char c = 'c'; + char c='c'; if (*p) { if (*(WORD*)tp == CHAR2_TO_WORD(':','\\')) p=tp+2; else if (*(WORD*)p == CHAR2_TO_WORD('\\','\\')) { - int x; - for (x = 0; x < 4; x ++) + int x=4; + while (x--) { while (*p != '\\' && *p) p=CharNext(p); // skip host then share p=CharNext(p); @@ -263,6 +256,13 @@ static int NSISCALL ExecuteEntry(entry *entry_) } } } + if (parm1) + { + update_status_text(LANG_OUTPUTDIR,buf1); + mystrcpy(state_output_directory,buf1); + SetCurrentDirectory(buf1); + } + else update_status_text(LANG_CREATEDIR,buf1); } break; case EW_IFFILEEXISTS: diff --git a/Source/util.cpp b/Source/util.cpp index d3f10609..0da412d8 100644 --- a/Source/util.cpp +++ b/Source/util.cpp @@ -179,6 +179,8 @@ int replace_icon(CResourceEditor* re, WORD wIconId, char* filename) re->UpdateResource(RT_GROUP_ICON, MAKEINTRESOURCE(wIconId), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), rsrcIconGroup, sizeof(IconGroupHeader) + igh.wCount*SIZEOF_RSRC_ICON_GROUP_ENTRY); + free(rsrcIconGroup); + icondata_size = iNewIconSize; return 0;