mirror of
https://github.com/fluencelabs/musl
synced 2025-06-24 12:12:04 +00:00
always add memory streams to stdio open file list
per interpretation for austin group issue #626, fflush(0) and exit() must block waiting for a lock if another thread has locked a memory stream with flockfile. this adds some otherwise-unnecessary synchronization cost to use of memory streams, but there was already a synchronization cost calling malloc anyway. previously the stream was only added to the open file list in single-threaded programs, so that upon subsequent call to pthread_create, locking could be turned on for the stream.
This commit is contained in:
@ -79,12 +79,13 @@ FILE *open_wmemstream(wchar_t **bufp, size_t *sizep)
|
||||
f->seek = wms_seek;
|
||||
f->close = wms_close;
|
||||
|
||||
if (!libc.threaded) {
|
||||
f->lock = -1;
|
||||
f->next = libc.ofl_head;
|
||||
if (libc.ofl_head) libc.ofl_head->prev = f;
|
||||
libc.ofl_head = f;
|
||||
}
|
||||
if (!libc.threaded) f->lock = -1;
|
||||
|
||||
OFLLOCK();
|
||||
f->next = libc.ofl_head;
|
||||
if (libc.ofl_head) libc.ofl_head->prev = f;
|
||||
libc.ofl_head = f;
|
||||
OFLUNLOCK();
|
||||
|
||||
return f;
|
||||
}
|
||||
|
Reference in New Issue
Block a user