[io-layer] Allocate the process name dynamically to make WapiHandle_process smaller.
authorZoltan Varga <vargaz@gmail.com>
Wed, 15 Oct 2014 22:56:01 +0000 (18:56 -0400)
committerZoltan Varga <vargaz@gmail.com>
Wed, 15 Oct 2014 22:56:01 +0000 (18:56 -0400)
mono/io-layer/process-private.h
mono/io-layer/processes.c

index 97b716ad21f0ff0b5a6850373efaa5d74f17f45c..1da7f472f008f853b9cb838dc24e4b9b6bf23ffb 100644 (file)
@@ -34,8 +34,6 @@ extern void wapi_processes_cleanup (void);
 
 extern struct _WapiHandleOps _wapi_process_ops;
 
-#define _WAPI_PROC_NAME_MAX_LEN _POSIX_PATH_MAX
-
 /*
  * MonoProcess describes processes we create.
  * It contains a semaphore that can be waited on in order to wait
@@ -67,7 +65,7 @@ struct _WapiHandle_process
        gpointer main_thread;
        WapiFileTime create_time;
        WapiFileTime exit_time;
-       gchar proc_name[_WAPI_PROC_NAME_MAX_LEN];
+       char *proc_name;
        size_t min_working_set;
        size_t max_working_set;
        gboolean exited;
index dc76d2e148800c45a8350a2b9f006df6191d2bed..fed2a3da24e90884c7a9a60c04d0014adcbed7cd 100644 (file)
@@ -838,8 +838,7 @@ gboolean CreateProcess (const gunichar2 *appname, const gunichar2 *cmdline,
                err_fd = GPOINTER_TO_UINT (GetStdHandle (STD_ERROR_HANDLE));
        }
        
-       g_strlcpy (process_handle.proc_name, prog,
-                  _WAPI_PROC_NAME_MAX_LEN - 1);
+       process_handle.proc_name = g_strdup (prog);
 
        process_set_defaults (&process_handle);
        
@@ -1075,12 +1074,9 @@ process_set_name (WapiHandle_process *process_handle)
        if (utf8_progname) {
                slash = strrchr (utf8_progname, '/');
                if (slash)
-                       g_strlcpy (process_handle->proc_name, slash+1,
-                                  _WAPI_PROC_NAME_MAX_LEN - 1);
+                       process_handle->proc_name = g_strdup (slash+1);
                else
-                       g_strlcpy (process_handle->proc_name, utf8_progname,
-                                  _WAPI_PROC_NAME_MAX_LEN - 1);
-
+                       process_handle->proc_name = g_strdup (utf8_progname);
                g_free (utf8_progname);
        }
 }
@@ -2491,6 +2487,8 @@ process_close (gpointer handle, gpointer data)
        DEBUG ("%s", __func__);
 
        process_handle = (WapiHandle_process *) data;
+       g_free (process_handle->proc_name);
+       process_handle->proc_name = NULL;
        if (process_handle->mono_process)
                InterlockedDecrement (&process_handle->mono_process->handle_count);
        mono_processes_cleanup ();