+2005-03-09 Dick Porter <dick@ximian.com>
+
+ * error.c (_wapi_get_win32_file_error): ENFILE and EMFILE should
+ map to ERROR_TOO_MANY_OPEN_FILES, not ERROR_NO_MORE_FILES. Fixes
+ bug 72671.
+
+2005-03-09 Dick Porter <dick@ximian.com>
+
+ * daemon.c (process_process_fork): Initialise the handle data
+ before using it in the error case. This is probably the error
+ we're working around in the previous change. Spotted by Taru Jain
+ <tjain@novell.com> and Hemanth Yamijala <YHemanth@novell.com>.
+
+2005-03-07 Dick Porter <dick@ximian.com>
+
+ * daemon.c: It looks like g_shell_parse_argv() can return
+ argv[0]=NULL somehow, yet still not give an error. Make sure we
+ don't pass NULL to strrchr(), working around a segfault that
+ showed up on ZLM testing.
+
+2005-03-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * sockets.c: translate EINPROGRESS to EWOULDBLOCK in connect. This is
+ the expected error code showed by the test case in bug #73053.
+
2005-02-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
* io.c: another leftover.
cmd=_wapi_handle_scratch_lookup (process_fork.cmd);
dir=_wapi_handle_scratch_lookup (process_fork.dir);
env=_wapi_handle_scratch_lookup_string_array (process_fork.env);
+
+ _wapi_lookup_handle (GUINT_TO_POINTER (process_handle),
+ WAPI_HANDLE_PROCESS,
+ (gpointer *)&process_handle_data,
+ NULL);
+
+ _wapi_lookup_handle (GUINT_TO_POINTER (thread_handle),
+ WAPI_HANDLE_THREAD,
+ (gpointer *)&thread_handle_data,
+ NULL);
ret=g_shell_parse_argv (cmd, NULL, &argv, &gerr);
if(ret==FALSE) {
g_message (G_GNUC_PRETTY_FUNCTION ": forking");
#endif
- _wapi_lookup_handle (GUINT_TO_POINTER (process_handle),
- WAPI_HANDLE_PROCESS,
- (gpointer *)&process_handle_data,
- NULL);
-
- _wapi_lookup_handle (GUINT_TO_POINTER (thread_handle),
- WAPI_HANDLE_THREAD,
- (gpointer *)&thread_handle_data,
- NULL);
-
/* Fork, exec cmd with args and optional env,
* and return the handles with pid and blank
* thread id
/* store process name, based on the last section of the cmd */
{
- char *slash=strrchr (argv[0], '/');
+ char *slash;
- if(slash!=NULL) {
- process_handle_data->proc_name=_wapi_handle_scratch_store (slash+1, strlen (slash+1));
+ /* This should never fail, but it seems it can...
+ */
+ if (argv[0] != NULL) {
+ slash=strrchr (argv[0], '/');
+
+ if(slash!=NULL) {
+ process_handle_data->proc_name=_wapi_handle_scratch_store (slash+1, strlen (slash+1));
+ } else {
+ process_handle_data->proc_name=_wapi_handle_scratch_store (argv[0], strlen (argv[0]));
+ }
} else {
- process_handle_data->proc_name=_wapi_handle_scratch_store (argv[0], strlen (argv[0]));
+ process_handle_data->proc_name = _wapi_handle_scratch_store (cmd, strlen(cmd));
}
}