Commit 43373e61fa

Yuto Oguchi <git@aiotter.com>
2022-05-27 02:15:51
std.c: Fix incorrect dirent structure (#11602)
d_name is a null-terminated string, but it is not guaranteed that the last byte of the array is null.
1 parent e0a0df5
Changed files (2)
lib/std/c/darwin.zig
@@ -928,12 +928,12 @@ pub const Sigaction = extern struct {
 };
 
 pub const dirent = extern struct {
-    d_ino: usize,
-    d_seekoff: usize,
+    d_ino: u64,
+    d_seekoff: u64,
     d_reclen: u16,
     d_namlen: u16,
     d_type: u8,
-    d_name: u8, // field address is address of first byte of name
+    d_name: [1024]u8,
 
     pub fn reclen(self: dirent) u16 {
         return self.d_reclen;
lib/std/c/netbsd.zig
@@ -337,7 +337,7 @@ pub const dirent = extern struct {
     d_reclen: u16,
     d_namlen: u16,
     d_type: u8,
-    d_name: [MAXNAMLEN:0]u8,
+    d_name: [MAXNAMLEN + 1]u8,
 
     pub fn reclen(self: dirent) u16 {
         return self.d_reclen;