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);