mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Dont manipulate pointer from getenv
Found this when looking to fix bug https://github.com/profanity-im/profanity/issues/1357 Not sure if it is related. man 3 getenv sais: ``` As typically implemented, getenv() returns a pointer to a string within the environment list. The caller must take care not to modify this string, since that would change the environment of the process. ```
This commit is contained in:
parent
74ff38f0bd
commit
f1141932fc
@ -170,12 +170,16 @@ files_get_data_path(char *data_base)
|
|||||||
static char*
|
static char*
|
||||||
_files_get_xdg_config_home(void)
|
_files_get_xdg_config_home(void)
|
||||||
{
|
{
|
||||||
gchar *xdg_config_home = getenv("XDG_CONFIG_HOME");
|
gchar *xdg_config_home_env = getenv("XDG_CONFIG_HOME");
|
||||||
if (xdg_config_home)
|
gchar *xdg_config_home = NULL;
|
||||||
|
|
||||||
|
if (xdg_config_home_env) {
|
||||||
|
xdg_config_home = strdup(xdg_config_home_env);
|
||||||
g_strstrip(xdg_config_home);
|
g_strstrip(xdg_config_home);
|
||||||
|
}
|
||||||
|
|
||||||
if (xdg_config_home && (strcmp(xdg_config_home, "") != 0)) {
|
if (xdg_config_home && (strcmp(xdg_config_home, "") != 0)) {
|
||||||
return strdup(xdg_config_home);
|
return xdg_config_home;
|
||||||
} else {
|
} else {
|
||||||
GString *default_path = g_string_new(getenv("HOME"));
|
GString *default_path = g_string_new(getenv("HOME"));
|
||||||
g_string_append(default_path, "/.config");
|
g_string_append(default_path, "/.config");
|
||||||
@ -189,12 +193,16 @@ _files_get_xdg_config_home(void)
|
|||||||
static char*
|
static char*
|
||||||
_files_get_xdg_data_home(void)
|
_files_get_xdg_data_home(void)
|
||||||
{
|
{
|
||||||
gchar *xdg_data_home = getenv("XDG_DATA_HOME");
|
gchar *xdg_data_home_env = getenv("XDG_DATA_HOME");
|
||||||
if (xdg_data_home)
|
gchar *xdg_data_home = NULL;
|
||||||
|
|
||||||
|
if (xdg_data_home_env) {
|
||||||
|
xdg_data_home = strdup(xdg_data_home_env);
|
||||||
g_strstrip(xdg_data_home);
|
g_strstrip(xdg_data_home);
|
||||||
|
}
|
||||||
|
|
||||||
if (xdg_data_home && (strcmp(xdg_data_home, "") != 0)) {
|
if (xdg_data_home && (strcmp(xdg_data_home, "") != 0)) {
|
||||||
return strdup(xdg_data_home);
|
return xdg_data_home;
|
||||||
} else {
|
} else {
|
||||||
GString *default_path = g_string_new(getenv("HOME"));
|
GString *default_path = g_string_new(getenv("HOME"));
|
||||||
g_string_append(default_path, "/.local/share");
|
g_string_append(default_path, "/.local/share");
|
||||||
|
Loading…
Reference in New Issue
Block a user