Fix dangling pointers causing erratic timer behaviour (affects taskbar with spacing); use calloc instead of malloc for safer initializations
git-svn-id: http://tint2.googlecode.com/svn/trunk@758 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
committed by
mrovi9000@gmail.com
parent
778b9f0ebf
commit
66cae4bb7c
@@ -52,7 +52,7 @@ void expand_exec(DesktopEntry *entry, const char *path)
|
||||
// %c -> Name
|
||||
// %k -> path
|
||||
if (entry->exec) {
|
||||
char *exec2 = malloc(strlen(entry->exec) + (entry->name ? strlen(entry->name) : 1) + (entry->icon ? strlen(entry->icon) : 1) + 100);
|
||||
char *exec2 = calloc(strlen(entry->exec) + (entry->name ? strlen(entry->name) : 1) + (entry->icon ? strlen(entry->icon) : 1) + 100, 1);
|
||||
char *p, *q;
|
||||
// p will never point to an escaped char
|
||||
for (p = entry->exec, q = exec2; *p; p++, q++) {
|
||||
|
||||
@@ -561,8 +561,8 @@ char *get_icon_path_helper(GSList *themes, const char *icon_name, int size)
|
||||
char *theme_name = ((IconTheme*)theme->data)->name;
|
||||
char *dir_name = ((IconThemeDir*)dir->data)->name;
|
||||
char *extension = (char*) ext->data;
|
||||
char *file_name = malloc(strlen(base_name) + strlen(theme_name) +
|
||||
strlen(dir_name) + strlen(icon_name) + strlen(extension) + 100);
|
||||
char *file_name = calloc(strlen(base_name) + strlen(theme_name) +
|
||||
strlen(dir_name) + strlen(icon_name) + strlen(extension) + 100, 1);
|
||||
// filename = directory/$(themename)/subdirectory/iconname.extension
|
||||
sprintf(file_name, "%s/%s/%s/%s%s", base_name, theme_name, dir_name, icon_name, extension);
|
||||
if (DEBUG_ICON_SEARCH)
|
||||
@@ -620,8 +620,8 @@ char *get_icon_path_helper(GSList *themes, const char *icon_name, int size)
|
||||
for (ext = extensions; ext; ext = g_slist_next(ext)) {
|
||||
char *base_name = (char*) base->data;
|
||||
char *extension = (char*) ext->data;
|
||||
char *file_name = malloc(strlen(base_name) + strlen(icon_name) +
|
||||
strlen(extension) + 100);
|
||||
char *file_name = calloc(strlen(base_name) + strlen(icon_name) +
|
||||
strlen(extension) + 100, 1);
|
||||
// filename = directory/iconname.extension
|
||||
sprintf(file_name, "%s/%s%s", base_name, icon_name, extension);
|
||||
if (DEBUG_ICON_SEARCH)
|
||||
|
||||
@@ -391,7 +391,7 @@ void free_icon(Imlib_Image icon)
|
||||
|
||||
void launcher_action(LauncherIcon *icon, XEvent* evt)
|
||||
{
|
||||
char *cmd = malloc(strlen(icon->cmd) + 10);
|
||||
char *cmd = calloc(strlen(icon->cmd) + 10, 1);
|
||||
sprintf(cmd, "(%s&)", icon->cmd);
|
||||
#if HAVE_SN
|
||||
SnLauncherContext* ctx;
|
||||
|
||||
@@ -235,14 +235,14 @@ static XSettingsList *parse_settings (unsigned char *data, size_t len)
|
||||
goto out;
|
||||
}
|
||||
|
||||
setting = malloc (sizeof *setting);
|
||||
setting = calloc (1, sizeof *setting);
|
||||
if (!setting) {
|
||||
result = XSETTINGS_NO_MEM;
|
||||
goto out;
|
||||
}
|
||||
setting->type = XSETTINGS_TYPE_INT; /* No allocated memory */
|
||||
|
||||
setting->name = malloc (name_len + 1);
|
||||
setting->name = calloc (name_len + 1, 1);
|
||||
if (!setting->name) {
|
||||
result = XSETTINGS_NO_MEM;
|
||||
goto out;
|
||||
@@ -276,7 +276,7 @@ static XSettingsList *parse_settings (unsigned char *data, size_t len)
|
||||
goto out;
|
||||
}
|
||||
|
||||
setting->data.v_string = malloc (v_int + 1);
|
||||
setting->data.v_string = calloc (v_int + 1, 1);
|
||||
if (!setting->data.v_string) {
|
||||
result = XSETTINGS_NO_MEM;
|
||||
goto out;
|
||||
@@ -400,7 +400,7 @@ XSettingsClient *xsettings_client_new (Display *display, int screen, XSettingsNo
|
||||
{
|
||||
XSettingsClient *client;
|
||||
|
||||
client = malloc (sizeof *client);
|
||||
client = calloc (1, sizeof *client);
|
||||
if (!client)
|
||||
return NULL;
|
||||
|
||||
|
||||
@@ -34,12 +34,12 @@ xsettings_setting_copy (XSettingsSetting *setting)
|
||||
XSettingsSetting *result;
|
||||
size_t str_len;
|
||||
|
||||
result = malloc (sizeof *result);
|
||||
result = calloc (1, sizeof *result);
|
||||
if (!result)
|
||||
return NULL;
|
||||
|
||||
str_len = strlen (setting->name);
|
||||
result->name = malloc (str_len + 1);
|
||||
result->name = calloc (str_len + 1, 1);
|
||||
if (!result->name)
|
||||
goto err;
|
||||
|
||||
@@ -57,7 +57,7 @@ xsettings_setting_copy (XSettingsSetting *setting)
|
||||
break;
|
||||
case XSETTINGS_TYPE_STRING:
|
||||
str_len = strlen (setting->data.v_string);
|
||||
result->data.v_string = malloc (str_len + 1);
|
||||
result->data.v_string = calloc (str_len + 1, 1);
|
||||
if (!result->data.v_string)
|
||||
goto err;
|
||||
|
||||
@@ -90,7 +90,7 @@ xsettings_list_copy (XSettingsList *list)
|
||||
{
|
||||
XSettingsList *new_node;
|
||||
|
||||
new_node = malloc (sizeof *new_node);
|
||||
new_node = calloc (1, sizeof *new_node);
|
||||
if (!new_node)
|
||||
goto error;
|
||||
|
||||
@@ -180,7 +180,7 @@ xsettings_list_insert (XSettingsList **list,
|
||||
XSettingsList *iter;
|
||||
XSettingsList *last = NULL;
|
||||
|
||||
node = malloc (sizeof *node);
|
||||
node = calloc (1, sizeof *node);
|
||||
if (!node)
|
||||
return XSETTINGS_NO_MEM;
|
||||
node->setting = setting;
|
||||
|
||||
Reference in New Issue
Block a user