mirror of
https://git.musl-libc.org/git/musl
synced 2025-02-21 20:54:25 +03:00
set stream orientations in open_[w]memstream
fundamentally there is no good reason these functions need to set an orientation (morally it should be possible to write a wchar_t[] memory stream using byte functions, or a char[] memory stream using wide functions), but it's a part of the specification that they do. aside from being able to inspect the orientation with fwide, failure to set the orientation in open_wmemstream is observable if the locale changes between open_wmemstream and the first operation on the stream; this is because the encoding rule (locale) for the stream is required to be bound at the time the stream becomes wide-oriented. for open_wmemstream, call fwide to avoid duplicating the logic for binding the encoding rule. for open_memstream it suffices just to set the mode field in the FILE struct.
This commit is contained in:
parent
f66022dda8
commit
b152d575fd
@ -89,6 +89,7 @@ FILE *open_memstream(char **bufp, size_t *sizep)
|
||||
f->f.write = ms_write;
|
||||
f->f.seek = ms_seek;
|
||||
f->f.close = ms_close;
|
||||
f->f.mode = -1;
|
||||
|
||||
if (!libc.threaded) f->f.lock = -1;
|
||||
|
||||
|
@ -94,5 +94,7 @@ FILE *open_wmemstream(wchar_t **bufp, size_t *sizep)
|
||||
|
||||
if (!libc.threaded) f->f.lock = -1;
|
||||
|
||||
fwide(&f->f, 1);
|
||||
|
||||
return __ofl_add(&f->f);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user