aboutsummaryrefslogtreecommitdiff
path: root/gdb/mi/mi-cmd-env.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/mi/mi-cmd-env.c')
-rw-r--r--gdb/mi/mi-cmd-env.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
index 703c632..f9685a5 100644
--- a/gdb/mi/mi-cmd-env.c
+++ b/gdb/mi/mi-cmd-env.c
@@ -93,7 +93,7 @@ mi_cmd_env_cd (const char *command, char **argv, int argc)
}
static void
-env_mod_path (const char *dirname, char **which_path)
+env_mod_path (const char *dirname, std::string &which_path)
{
if (dirname == 0 || dirname[0] == '\0')
return;
@@ -109,7 +109,6 @@ void
mi_cmd_env_path (const char *command, char **argv, int argc)
{
struct ui_out *uiout = current_uiout;
- char *exec_path;
const char *env;
int reset = 0;
int oind = 0;
@@ -152,11 +151,11 @@ mi_cmd_env_path (const char *command, char **argv, int argc)
argv += oind;
argc -= oind;
-
+ std::string exec_path;
if (reset)
{
/* Reset implies resetting to original path first. */
- exec_path = xstrdup (orig_path);
+ exec_path = orig_path;
}
else
{
@@ -166,14 +165,14 @@ mi_cmd_env_path (const char *command, char **argv, int argc)
/* Can be null if path is not set. */
if (!env)
env = "";
- exec_path = xstrdup (env);
+
+ exec_path = env;
}
for (i = argc - 1; i >= 0; --i)
- env_mod_path (argv[i], &exec_path);
+ env_mod_path (argv[i], exec_path);
- current_inferior ()->environment.set (path_var_name, exec_path);
- xfree (exec_path);
+ current_inferior ()->environment.set (path_var_name, exec_path.c_str ());
env = current_inferior ()->environment.get (path_var_name);
uiout->field_string ("path", env);
}
@@ -228,12 +227,11 @@ mi_cmd_env_dir (const char *command, char **argv, int argc)
if (reset)
{
/* Reset means setting to default path first. */
- xfree (source_path);
init_source_path ();
}
for (i = argc - 1; i >= 0; --i)
- env_mod_path (argv[i], &source_path);
+ env_mod_path (argv[i], source_path);
uiout->field_string ("source-path", source_path);
forget_cached_source_info ();