diff --git a/src/option_parser.c b/src/option_parser.c index c958db3..7fa307c 100644 --- a/src/option_parser.c +++ b/src/option_parser.c @@ -150,7 +150,7 @@ bool string_parse_mouse_action_list(char **s, enum mouse_action **ret) while (s[len]) len++; - *ret = g_malloc((len + 1) * sizeof(enum mouse_action)); + *ret = g_malloc_n((len + 1), sizeof(enum mouse_action)); for (int i = 0; i < len; i++) { if (!string_parse_mouse_action(s[i], *ret + i)) { LOG_W("Unknown mouse action value: '%s'", s[i]); diff --git a/src/utils.c b/src/utils.c index d837774..64beed9 100644 --- a/src/utils.c +++ b/src/utils.c @@ -151,18 +151,10 @@ char **string_to_array(const char *string) { char **arr = NULL; if (string) { - char* dup = g_strdup(string); - char* tmp = dup; - int num_tokens = 0; - char *token = strsep(&tmp, ","); - while (token) { - arr = g_realloc_n(arr, num_tokens + 2, sizeof(char*)); - arr[num_tokens] = g_strdup(g_strstrip(token)); - num_tokens++; - token = strsep(&tmp, ","); + arr = g_strsplit(string, ",", 0); + for (int i = 0; arr[i]; i++){ + g_strstrip(arr[i]); } - arr[num_tokens] = NULL; - g_free(dup); } return arr; }