aboutsummaryrefslogtreecommitdiffhomepage
path: root/uzbl-core.c
diff options
context:
space:
mode:
authorGravatar keis <keijser@gmail.com>2009-10-18 22:13:15 +0200
committerGravatar keis <keijser@gmail.com>2009-10-19 19:57:37 +0200
commit948908bb0c26f9211d744203ed89c0469f0039c8 (patch)
treefccd2dcc303fd61accaea043f762d254b682de66 /uzbl-core.c
parente5a7aab52440bd3f7e9f5d68f0eada05ba4a61cd (diff)
parseenv always returns a new string.
Diffstat (limited to 'uzbl-core.c')
-rw-r--r--uzbl-core.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/uzbl-core.c b/uzbl-core.c
index 9e3d4ce..2cf5bd8 100644
--- a/uzbl-core.c
+++ b/uzbl-core.c
@@ -442,21 +442,22 @@ find_existing_file(gchar* path_list) {
}
+/* Returns a new string with environment $variables expanded */
gchar*
-parseenv (char* string) {
+parseenv (gchar* string) {
extern char** environ;
- gchar* tmpstr = NULL;
+ gchar* tmpstr = NULL, * out;
int i = 0;
+ out = g_strdup(string);
while (environ[i] != NULL) {
gchar** env = g_strsplit (environ[i], "=", 2);
gchar* envname = g_strconcat ("$", env[0], NULL);
if (g_strrstr (string, envname) != NULL) {
- tmpstr = g_strdup(string);
- g_free (string);
- string = str_replace(envname, env[1], tmpstr);
+ tmpstr = out;
+ out = str_replace(envname, env[1], out);
g_free (tmpstr);
}
@@ -465,7 +466,7 @@ parseenv (char* string) {
i++;
}
- return string;
+ return out;
}
sigfunc*
@@ -666,7 +667,7 @@ set_var(WebKitWebView *page, GArray *argv, GString *result) {
(void) page; (void) result;
gchar **split = g_strsplit(argv_idx(argv, 0), "=", 2);
if (split[0] != NULL) {
- gchar *value = parseenv(g_strdup(split[1] ? g_strchug(split[1]) : " "));
+ gchar *value = parseenv(split[1] ? g_strchug(split[1]) : " ");
set_var_value(g_strstrip(split[0]), value);
g_free(value);
}