mirror of git://git.musl-libc.org/musl
in vswprintf, initialize the FILE rather than memset-and-assign
this is the idiom that's used elsewhere and should be more efficient or at least no worse.
This commit is contained in:
parent
aaa29c26ee
commit
7c59d09863
|
@ -1,6 +1,5 @@
|
||||||
#include "stdio_impl.h"
|
#include "stdio_impl.h"
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <string.h>
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
|
@ -37,17 +36,17 @@ static size_t sw_write(FILE *f, const unsigned char *s, size_t l)
|
||||||
int vswprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, va_list ap)
|
int vswprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, va_list ap)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
FILE f;
|
|
||||||
unsigned char buf[256];
|
unsigned char buf[256];
|
||||||
struct cookie c = { s, n-1 };
|
struct cookie c = { s, n-1 };
|
||||||
|
FILE f = {
|
||||||
|
.lbf = EOF,
|
||||||
|
.write = sw_write,
|
||||||
|
.lock = -1,
|
||||||
|
.buf = buf,
|
||||||
|
.buf_size = sizeof buf,
|
||||||
|
.cookie = &c,
|
||||||
|
};
|
||||||
|
|
||||||
memset(&f, 0, sizeof(FILE));
|
|
||||||
f.lbf = EOF;
|
|
||||||
f.write = sw_write;
|
|
||||||
f.buf_size = sizeof buf;
|
|
||||||
f.buf = buf;
|
|
||||||
f.lock = -1;
|
|
||||||
f.cookie = &c;
|
|
||||||
if (!n) {
|
if (!n) {
|
||||||
return -1;
|
return -1;
|
||||||
} else if (n > INT_MAX) {
|
} else if (n > INT_MAX) {
|
||||||
|
|
Loading…
Reference in New Issue