|
@@ -746,15 +746,17 @@ void browse(HWND window, TCHAR *current, unsigned long flags, ...) {
|
|
|
va_end(arg);
|
|
|
/* Remainder of the buffer is already zeroed */
|
|
|
}
|
|
|
- ofn.lpstrFile = new TCHAR[PATH_LENGTH];
|
|
|
- if (flags & OFN_NOVALIDATE) {
|
|
|
- /* Directory hack. */
|
|
|
- _sntprintf_s(ofn.lpstrFile, _countof(ofn.lpstrFile), _TRUNCATE, _T(":%s:"), message_string(NSSM_GUI_BROWSE_FILTER_DIRECTORIES));
|
|
|
- ofn.nMaxFile = DIR_LENGTH;
|
|
|
- }
|
|
|
- else {
|
|
|
- _sntprintf_s(ofn.lpstrFile, _countof(ofn.lpstrFile), _TRUNCATE, _T("%s"), current);
|
|
|
- ofn.nMaxFile = PATH_LENGTH;
|
|
|
+ ofn.lpstrFile = (TCHAR *) HeapAlloc(GetProcessHeap(), 0, PATH_LENGTH * sizeof(TCHAR));
|
|
|
+ if (ofn.lpstrFile) {
|
|
|
+ if (flags & OFN_NOVALIDATE) {
|
|
|
+ /* Directory hack. */
|
|
|
+ _sntprintf_s(ofn.lpstrFile, PATH_LENGTH, _TRUNCATE, _T(":%s:"), message_string(NSSM_GUI_BROWSE_FILTER_DIRECTORIES));
|
|
|
+ ofn.nMaxFile = DIR_LENGTH;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ _sntprintf_s(ofn.lpstrFile, PATH_LENGTH, _TRUNCATE, _T("%s"), current);
|
|
|
+ ofn.nMaxFile = PATH_LENGTH;
|
|
|
+ }
|
|
|
}
|
|
|
ofn.lpstrTitle = message_string(NSSM_GUI_BROWSE_TITLE);
|
|
|
ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | flags;
|
|
@@ -765,8 +767,7 @@ void browse(HWND window, TCHAR *current, unsigned long flags, ...) {
|
|
|
SendMessage(window, WM_SETTEXT, 0, (LPARAM) ofn.lpstrFile);
|
|
|
}
|
|
|
if (ofn.lpstrFilter) HeapFree(GetProcessHeap(), 0, (void *) ofn.lpstrFilter);
|
|
|
-
|
|
|
- delete[] ofn.lpstrFile;
|
|
|
+ if (ofn.lpstrFile) HeapFree(GetProcessHeap(), 0, ofn.lpstrFile);
|
|
|
}
|
|
|
|
|
|
INT_PTR CALLBACK tab_dlg(HWND tab, UINT message, WPARAM w, LPARAM l) {
|