aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2011-06-24 06:48:54 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2011-06-24 06:48:54 +0000
commit64e685e51690547beeea580db1e07e7e122958da (patch)
tree30c697916febfa6139553f7a8c609e8422db7c72
parent99c745455b059217fb78f111620b27b0f1b7870b (diff)
my_tmpfile(): win32: fixed a memory leak.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2911 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog2
-rw-r--r--libsylph/utils.c15
2 files changed, 13 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 24d9244a..f59a7b80 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@
* src/summaryview.c: summary_colorlabel_menu_item_activate_item_cb():
removed alloca().
+ * libsylph/utils.c: my_tmpfile(): win32: fixed a memory leak.
+ unix: removed alloca().
2011-06-23
diff --git a/libsylph/utils.c b/libsylph/utils.c
index 18c9917c..ac00e03e 100644
--- a/libsylph/utils.c
+++ b/libsylph/utils.c
@@ -3767,6 +3767,8 @@ FILE *my_tmpfile(void)
close(fd);
}
+ g_free(fname);
+
return fp;
#else
const gchar suffix[] = ".XXXXXX";
@@ -3784,8 +3786,7 @@ FILE *my_tmpfile(void)
if (!progname)
progname = "sylph";
proglen = strlen(progname);
- Xalloca(fname, tmplen + 1 + proglen + sizeof(suffix),
- return tmpfile());
+ fname = g_malloc(tmplen + 1 + proglen + sizeof(suffix));
memcpy(fname, tmpdir, tmplen);
fname[tmplen] = G_DIR_SEPARATOR;
@@ -3793,14 +3794,20 @@ FILE *my_tmpfile(void)
memcpy(fname + tmplen + 1 + proglen, suffix, sizeof(suffix));
fd = g_mkstemp(fname);
- if (fd < 0)
+ if (fd < 0) {
+ g_free(fname);
return tmpfile();
+ }
g_unlink(fname);
fp = fdopen(fd, "w+b");
- if (!fp)
+ if (!fp) {
+ perror("fdopen");
close(fd);
+ }
+
+ g_free(fname);
return fp;
#endif