Do not break quoted strings in Control_DoLaunch.
This commit is contained in:
parent
513eb2a24a
commit
03adaea165
|
@ -317,6 +317,7 @@ static void Control_DoLaunch(CPanel* panel, HWND hWnd, LPCSTR cmd)
|
||||||
char ch;
|
char ch;
|
||||||
unsigned sp = 0;
|
unsigned sp = 0;
|
||||||
char* extraPmts = NULL;
|
char* extraPmts = NULL;
|
||||||
|
int quoted = 0;
|
||||||
|
|
||||||
buffer = HeapAlloc(GetProcessHeap(), 0, strlen(cmd) + 1);
|
buffer = HeapAlloc(GetProcessHeap(), 0, strlen(cmd) + 1);
|
||||||
if (!buffer) return;
|
if (!buffer) return;
|
||||||
|
@ -325,7 +326,8 @@ static void Control_DoLaunch(CPanel* panel, HWND hWnd, LPCSTR cmd)
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
ch = *end;
|
ch = *end;
|
||||||
if (ch == ' ' || ch == ',' || ch == '\0') {
|
if (ch == '"') quoted = !quoted;
|
||||||
|
if (!quoted && (ch == ' ' || ch == ',' || ch == '\0')) {
|
||||||
*end = '\0';
|
*end = '\0';
|
||||||
if (beg) {
|
if (beg) {
|
||||||
if (*beg == '@') {
|
if (*beg == '@') {
|
||||||
|
@ -342,6 +344,9 @@ static void Control_DoLaunch(CPanel* panel, HWND hWnd, LPCSTR cmd)
|
||||||
}
|
}
|
||||||
end++;
|
end++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRACE("cmd %s, extra %s, sp %d\n", buffer, debugstr_a(extraPmts), sp);
|
||||||
|
|
||||||
Control_LoadApplet(hWnd, buffer, panel);
|
Control_LoadApplet(hWnd, buffer, panel);
|
||||||
|
|
||||||
if (panel->first) {
|
if (panel->first) {
|
||||||
|
|
Loading…
Reference in New Issue