// // _freebuf.cpp // // Copyright (c) Microsoft Corporation. All rights reserved. // // Defines __acrt_stdio_free_buffer(), which releaes a buffer from a stream. // #include <corecrt_internal_stdio.h> // Releases a buffer from a stream. If the stream is buffered and the buffer // was allocated by the CRT, the space is freed. If the buffer was provided by // the user, it is not freed (since we do not know how to free it). extern "C" void __cdecl __acrt_stdio_free_buffer_nolock(FILE* const public_stream) { _ASSERTE(public_stream != nullptr); __crt_stdio_stream const stream(public_stream); if (!stream.is_in_use()) return; if (!stream.has_crt_buffer()) return; _free_crt(stream->_base); stream.unset_flags(_IOBUFFER_CRT | _IOBUFFER_SETVBUF); stream->_base = nullptr; stream->_ptr = nullptr; stream->_cnt = 0; }