correct command line handling in lean explorer
Modified:
branches/lean-explorer/reactos/subsys/system/explorer/explorer.cpp
_____
Modified:
branches/lean-explorer/reactos/subsys/system/explorer/explorer.cpp
--- branches/lean-explorer/reactos/subsys/system/explorer/explorer.cpp
2005-12-28 02:20:27 UTC (rev 20390)
+++ branches/lean-explorer/reactos/subsys/system/explorer/explorer.cpp
2005-12-28 12:27:25 UTC (rev 20391)
@@ -452,10 +452,14 @@
cmd.ParseCmdLine(lpCmdLine);
// Open the first child window after initializing the
application
- if (cmd.IsValidPath())
- PostMessage(hMainFrame, PM_OPEN_WINDOW,
cmd._flags, (LPARAM)lpCmdLine);
- else
- PostMessage(hMainFrame, PM_OPEN_WINDOW,
0/*OWM_EXPLORE|OWM_DETAILS*/, 0);
+ if (cmd.IsValidPath()) {
+ // We use the static s_path variable to store
the path string in order
+ // to avoid accessing prematurely freed memory
in the PostMessage handlers.
+ static String s_path = cmd._path;
+
+ PostMessage(hMainFrame, PM_OPEN_WINDOW,
cmd._flags, (LPARAM)(LPCTSTR)s_path);
+ } else
+ PostMessage(hMainFrame, PM_OPEN_WINDOW,
cmd._flags, 0);
}
}