combine two calls to memset in fmemopen
authorRich Felker <dalias@aerifal.cx>
Fri, 17 Apr 2020 20:10:28 +0000 (16:10 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 17 Apr 2020 20:10:28 +0000 (16:10 -0400)
this idea came up when I thought we might need to zero the UNGET
portion of buf as well, but it seems like a useful improvement even
when that turned out not to be necessary.

src/stdio/fmemopen.c

index 5685092e36018247bb7308bbce5db18416b8b3f9..5afd85cf7a6e8068153b44ad4f187c0ebf48fd62 100644 (file)
@@ -2,6 +2,7 @@
 #include <errno.h>
 #include <string.h>
 #include <stdlib.h>
+#include <stddef.h>
 #include <inttypes.h>
 #include "libc.h"
 
@@ -95,7 +96,7 @@ FILE *fmemopen(void *restrict buf, size_t size, const char *restrict mode)
 
        f = malloc(sizeof *f + (buf?0:size));
        if (!f) return 0;
-       memset(&f->f, 0, sizeof f->f);
+       memset(f, 0, offsetof(struct mem_FILE, buf));
        f->f.cookie = &f->c;
        f->f.fd = -1;
        f->f.lbf = EOF;
@@ -106,7 +107,6 @@ FILE *fmemopen(void *restrict buf, size_t size, const char *restrict mode)
                memset(buf, 0, size);
        }
 
-       memset(&f->c, 0, sizeof f->c);
        f->c.buf = buf;
        f->c.size = size;
        f->c.mode = *mode;