From: Jan Beich Date: Sun, 16 Feb 2020 05:54:33 +0000 (+0000) Subject: cursor/os-compatibility: move resizing into a separate function X-Git-Tag: 1.18.91~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=230885ebb40b35c68a3b88a649f449afa344ec28;p=platform%2Fupstream%2Fwayland.git cursor/os-compatibility: move resizing into a separate function Signed-off-by: Jan Beich --- diff --git a/cursor/os-compatibility.c b/cursor/os-compatibility.c index 002bb5c..9eac229 100644 --- a/cursor/os-compatibility.c +++ b/cursor/os-compatibility.c @@ -119,7 +119,6 @@ os_create_anonymous_file(off_t size) const char *path; char *name; int fd; - int ret; #ifdef HAVE_MEMFD_CREATE fd = memfd_create("wayland-cursor", MFD_CLOEXEC | MFD_ALLOW_SEALING); @@ -155,25 +154,30 @@ os_create_anonymous_file(off_t size) return -1; } + if (os_resize_anonymous_file(fd, size) < 0) { + close(fd); + return -1; + } + + return fd; +} + +int +os_resize_anonymous_file(int fd, off_t size) +{ #ifdef HAVE_POSIX_FALLOCATE /* * Filesystems that do support fallocate will return EINVAL or * EOPNOTSUPP. In this case we need to fall back to ftruncate */ - ret = posix_fallocate(fd, 0, size); - if (ret == 0) { - return fd; - } else if (ret != EINVAL && ret != EOPNOTSUPP) { - close(fd); - errno = ret; + errno = posix_fallocate(fd, 0, size); + if (errno == 0) + return 0; + else if (errno != EINVAL && errno != EOPNOTSUPP) return -1; - } #endif - ret = ftruncate(fd, size); - if (ret < 0) { - close(fd); + if (ftruncate(fd, size) < 0) return -1; - } - return fd; + return 0; } diff --git a/cursor/os-compatibility.h b/cursor/os-compatibility.h index d0e69ac..fdfeb78 100644 --- a/cursor/os-compatibility.h +++ b/cursor/os-compatibility.h @@ -31,4 +31,7 @@ int os_create_anonymous_file(off_t size); +int +os_resize_anonymous_file(int fd, off_t size); + #endif /* OS_COMPATIBILITY_H */ diff --git a/cursor/wayland-cursor.c b/cursor/wayland-cursor.c index ca5be8d..4e2dc50 100644 --- a/cursor/wayland-cursor.c +++ b/cursor/wayland-cursor.c @@ -83,17 +83,7 @@ err_free: static int shm_pool_resize(struct shm_pool *pool, int size) { -#ifdef HAVE_POSIX_FALLOCATE - /* - * Filesystems that do support fallocate will return EINVAL or - * EOPNOTSUPP. In this case we need to fall back to ftruncate - */ - errno = posix_fallocate(pool->fd, 0, size); - if (errno != 0 && errno != EINVAL && errno != EOPNOTSUPP) - return 0; -#endif - - if (ftruncate(pool->fd, size) < 0) + if (os_resize_anonymous_file(pool->fd, size) < 0) return 0; wl_shm_pool_resize(pool->pool, size);