X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fdata.c;h=ab373114c6b0f3e3529f2208d1d1d8bc53860951;hp=fa11ea8460f03cdfb1738c89e4ccac416c182e81;hb=93c853165104b5119e17be07e325f9097a5ebdb3;hpb=c17d694dcf9b73f7034e8100aeb0282ae2dc55cb diff --git a/src/data.c b/src/data.c index fa11ea8..ab37311 100644 --- a/src/data.c +++ b/src/data.c @@ -70,11 +70,17 @@ void cache_file(char *base, char *path, AWeatherCacheDoneCallback callback, gpoi else if (g_file_get_size(src) != g_file_get_size(dst)) g_message("Caching file: sizes mismatch - %lld != %lld", g_file_get_size(src), g_file_get_size(dst)); - else - return callback(local, user_data); + else { + callback(local, user_data); + g_free(local); + g_free(url); + return; + } - if (!g_file_test(g_path_get_dirname(local), G_FILE_TEST_IS_DIR)) - g_mkdir_with_parents(g_path_get_dirname(local), 0755); + char *dir = g_path_get_dirname(local); + if (!g_file_test(dir, G_FILE_TEST_IS_DIR)) + g_mkdir_with_parents(dir, 0755); + g_free(dir); cache_file_end_t *info = g_malloc0(sizeof(cache_file_end_t)); info->callback = callback; info->src = url;