diff --git a/lib/libc/stdio/Symbol.map b/lib/libc/stdio/Symbol.map index 4926b6f3572..c5b2e1271d1 100644 --- a/lib/libc/stdio/Symbol.map +++ b/lib/libc/stdio/Symbol.map @@ -187,6 +187,7 @@ FBSDprivate_1.0 { _ftrylockfile; _funlockfile; __vfscanf; + __libc_freeres; /* * xprintf support diff --git a/lib/libc/stdio/makebuf.c b/lib/libc/stdio/makebuf.c index 9bddf89a65b..dce9c1a2667 100644 --- a/lib/libc/stdio/makebuf.c +++ b/lib/libc/stdio/makebuf.c @@ -116,3 +116,23 @@ __swhatbuf(FILE *fp, size_t *bufsize, int *couldbetty) return ((st.st_mode & S_IFMT) == S_IFREG && fp->_seek == __sseek ? __SOPT : __SNPT); } + +#pragma weak __libc_freeres +void +__libc_freeres(void) +{ + if (stdout->_p) + { + free(stdout->_p); + stdout->_p = NULL; + } + if (stderr->_p) + { + free(stderr->_p); + stderr->_p = NULL; + } +} + + + +