From 08036e1ffe2a149189bf14684a6f7e1f45789ba8 Mon Sep 17 00:00:00 2001 From: kjayapra-amd Date: Tue, 12 May 2020 08:52:49 -0400 Subject: [PATCH] SWDEV-232464 - Use Fstat to retrieve file size. Change-Id: I4051645cd322c2afaf89e014452657db1a1fdc2c [ROCm/clr commit: c97ef9f84ad770e395d62947cad587414b78d525] --- projects/clr/rocclr/os/os_posix.cpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) mode change 100644 => 100755 projects/clr/rocclr/os/os_posix.cpp diff --git a/projects/clr/rocclr/os/os_posix.cpp b/projects/clr/rocclr/os/os_posix.cpp old mode 100644 new mode 100755 index df20ccf2c0..c53b084ac0 --- a/projects/clr/rocclr/os/os_posix.cpp +++ b/projects/clr/rocclr/os/os_posix.cpp @@ -720,24 +720,21 @@ bool Os::MemoryMapFile(const char* fname, const void** mmap_ptr, size_t* mmap_si return false; } - FILE* fp = fopen(fname, "r"); - if (fp == nullptr) { - return false; - } - - int fd = fileno(fp); + struct stat stat_buf; + int fd = open(fname, O_RDONLY); if (fd < 0 ) { - fclose(fp); return false; } - fseek(fp, 0L, SEEK_END); - *mmap_size = ftell(fp); - fseek(fp, 0L, SEEK_SET); + if(fstat(fd, &stat_buf) != 0) { + close(fd); + return false; + } - *mmap_ptr = mmap(NULL, *mmap_size, PROT_READ, MAP_SHARED, fd, 0); + *mmap_size = stat_buf.st_size; + *mmap_ptr = mmap(NULL, stat_buf.st_size, PROT_READ, MAP_SHARED, fd, 0); - fclose(fp); + close(fd); if (*mmap_ptr == nullptr) { return false;