From b249d37ce4a00a0d03265f1eae346ecf241f80f7 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 24 May 2012 05:07:22 +0000 Subject: [PATCH] based on Raphael's idea of tmpdir env vars and such - but different. still disables unlink on non-linux. SVN revision: 71386 --- .../evas/src/lib/canvas/evas_object_image.c | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/legacy/evas/src/lib/canvas/evas_object_image.c b/legacy/evas/src/lib/canvas/evas_object_image.c index 571570b552..aa3c8e84f0 100644 --- a/legacy/evas/src/lib/canvas/evas_object_image.c +++ b/legacy/evas/src/lib/canvas/evas_object_image.c @@ -221,7 +221,7 @@ _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__) { #ifdef HAVE_SYS_MMAN_H Evas_Object_Image *o; - char buf[4096]; + char buf[PATH_MAX]; void *dst; int fd = -1; @@ -233,18 +233,31 @@ _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__) #endif if (fd < 0) { - snprintf(buf, sizeof(buf), "/tmp/.evas-tmpf-%i-%p-%i-XXXXXX", - (int)getpid(), data, (int)size); + const char *tmpdir = getenv("TMPDIR"); + + if (!tmpdir) + { + tmpdir = getenv("TMP"); + if (!tmpdir) + { + tmpdir = getenv("TEMP"); + if (!tmpdir) tmpdir = "/tmp"; + } + } + snprintf(buf, sizeof(buf), "%s/.evas-tmpf-%i-%p-%i-XXXXXX", + tmpdir, (int)getpid(), data, (int)size); fd = mkstemp(buf); + if (fd < 0) return; } - if (fd < 0) return; if (ftruncate(fd, size) < 0) { unlink(buf); close(fd); return; } +#ifdef __linux__ unlink(buf); +#endif eina_mmap_safety_enabled_set(EINA_TRUE);