[gnome-builder/wip/gtk4-port: 1637/1774] libide/foundry: handle merging environment layers




commit 9fabb136f74482fb02c6fcd659635876306a3d66
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jun 24 00:02:48 2022 -0700

    libide/foundry: handle merging environment layers
    
    If environment was set without an argument vector, then what we wanted was
    to just merge the environments. Do that instead.

 src/libide/foundry/ide-run-context.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)
---
diff --git a/src/libide/foundry/ide-run-context.c b/src/libide/foundry/ide-run-context.c
index 0a8fae32d..b67b9fdce 100644
--- a/src/libide/foundry/ide-run-context.c
+++ b/src/libide/foundry/ide-run-context.c
@@ -822,16 +822,17 @@ ide_run_context_default_handler (IdeRunContext       *self,
   if (!ide_unix_fd_map_steal_from (layer->unix_fd_map, unix_fd_map, error))
     return FALSE;
 
-  /* Replace environment for this layer to use "env FOO=Bar" style subcommand
-   * so that it's evironment doesn't attach to the parent program.
-   */
-  ide_run_context_environ_to_argv (self);
-
-  /* Then make sure the higher layer's environment has higher priority */
-  ide_run_context_set_environ (self, env);
-
-  /* Now append the arguments */
-  ide_run_context_append_args (self, argv);
+  if (argv != NULL && argv[0] != NULL)
+    {
+      /* Convert environment into "env FOO=BAR subcommand" style */
+      ide_run_context_environ_to_argv (self);
+      ide_run_context_append_args (self, argv);
+    }
+  else
+    {
+      /* No argv was provided, just merge environments */
+      ide_run_context_add_environ (self, env);
+    }
 
   return TRUE;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]