From e32f033853f90a5ff00b03090b3cf08630b11e22 Mon Sep 17 00:00:00 2001 From: Wonguk Jeong Date: Thu, 17 Apr 2014 19:34:33 +0200 Subject: [PATCH] efreet: check magic only for file which has size Summary: Due to unnecessary magic checking, there was freezing in /proc in efm. Proc file's st_size is zero, but, it's readable. therfore, it takes unnecessary time in magic checking. And, there is no need to check magic in case of 0 sized regular files as well. Therefore, skip magic check in case of st_size is zero. Fixes T1173 Test Plan: enlightenment -> file browser (efm) -> get int /proc --> check whether efm freezes or not Reviewers: raster, cedric, zmike CC: seoz, cedric Maniphest Tasks: T1173 Differential Revision: https://phab.enlightenment.org/D764 Signed-off-by: Cedric Bail --- src/lib/efreet/efreet_mime.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/efreet/efreet_mime.c b/src/lib/efreet/efreet_mime.c index b21a75e..23d86cf 100644 --- a/src/lib/efreet/efreet_mime.c +++ b/src/lib/efreet/efreet_mime.c @@ -1244,6 +1244,14 @@ efreet_mime_magic_check_priority(const char *file, const char *last_mime = NULL; int c; char v, buf[EFREET_MIME_MAGIC_BUFFER_SIZE]; + struct stat s; + +#ifdef _WIN32 + if (stat(file, &s) || s.st_size == 0) +#else + if (lstat(file, &s) || s.st_size == 0) +#endif + return NULL; f = fopen(file, "rb"); if (!f) return NULL; -- 2.7.4