about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-06-26 11:18:44 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-06-26 11:18:44 +0200
commit66bf32bafa3bd712493904919cc97aeff43493c4 (patch)
treea604f7369ac27c097e2de56753942bb1a5a36a67 /src
parentaa42913eced86e91766e58d789d55f4309f0fde1 (diff)
downloadbox64-66bf32bafa3bd712493904919cc97aeff43493c4.tar.gz
box64-66bf32bafa3bd712493904919cc97aeff43493c4.zip
Also changed the other wrapped __Xstat(64) function to accept a NULL buffer
Diffstat (limited to 'src')
-rwxr-xr-xsrc/wrapped/wrappedlibc.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c
index 7ecd21b4..a5f41035 100755
--- a/src/wrapped/wrappedlibc.c
+++ b/src/wrapped/wrappedlibc.c
@@ -994,8 +994,9 @@ EXPORT int my___fxstat(x64emu_t *emu, int vers, int fd, void* buf)
 {
     (void)emu; (void)vers;
     struct stat64 st;
-    int r = fstat64(fd, &st);
-    UnalignStat64(&st, buf);
+    int r = fstat64(fd, buf?&st:buf);
+    if(buf)
+        UnalignStat64(&st, buf);
     return r;
 }
 
@@ -1003,9 +1004,9 @@ EXPORT int my___fxstat64(x64emu_t *emu, int vers, int fd, void* buf)
 {
     (void)emu; (void)vers;
     struct stat64 st;
-    int r = fstat64(fd, &st);
-    //int r = syscall(__NR_stat64, fd, &st);
-    UnalignStat64(&st, buf);
+    int r = fstat64(fd, buf?&st:buf);
+    if(buf)
+        UnalignStat64(&st, buf);
     return r;
 }
 
@@ -1023,8 +1024,9 @@ EXPORT int my___xstat64(x64emu_t* emu, int v, void* path, void* buf)
 {
     (void)emu; (void)v;
     struct stat64 st;
-    int r = stat64((const char*)path, &st);
-    UnalignStat64(&st, buf);
+    int r = stat64((const char*)path, buf?&st:buf);
+    if(buf)
+        UnalignStat64(&st, buf);
     return r;
 }
 
@@ -1032,8 +1034,9 @@ EXPORT int my___lxstat(x64emu_t* emu, int v, void* name, void* buf)
 {
     (void)emu; (void)v;
     struct stat64 st;
-    int r = lstat64((const char*)name, &st);
-    UnalignStat64(&st, buf);
+    int r = lstat64((const char*)name, buf?&st:buf);
+    if(buf)
+        UnalignStat64(&st, buf);
     return r;
 }
 
@@ -1041,8 +1044,9 @@ EXPORT int my___lxstat64(x64emu_t* emu, int v, void* name, void* buf)
 {
     (void)emu; (void)v;
     struct stat64 st;
-    int r = lstat64((const char*)name, &st);
-    UnalignStat64(&st, buf);
+    int r = lstat64((const char*)name, buf?&st:buf);
+    if(buf)
+        UnalignStat64(&st, buf);
     return r;
 }