Only set valid child status in case exit code has been gotten from
child process, otherwise signal failure through thread return value.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=92721
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
DWORD status;
PING();
+ // wait until process finished
WaitForSingleObject (sitter->child_handle, INFINITE);
PING();
ret = GetExitCodeProcess (sitter->child_handle, &status);
-
- sitter->child_status = status;
- sitter->have_child_status = TRUE;
+ if (ret)
+ {
+ sitter->child_status = status;
+ sitter->have_child_status = TRUE;
+ }
CloseHandle (sitter->child_handle);
sitter->child_handle = NULL;
_dbus_babysitter_unref (sitter);
- return 0;
+ return ret ? 0 : 1;
}
dbus_bool_t