diff options
author | Elliott Hughes <enh@google.com> | 2017-07-21 13:57:55 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2017-07-24 11:58:23 -0700 |
commit | 80e4c1529d1b63ee0b7f6f6ad7900885ba1c0b51 (patch) | |
tree | 10d3bbc98daa42f9dcde176b9eb9e3a5da42aeb5 /libc/stdio/stdio.cpp | |
parent | 0d6485eca47f0e860486795b2da97679948fd5d5 (diff) |
Remove the HASLB and FREEUB macros.
Because we hate macros.
Bug: N/A
Test: ran tests
Change-Id: I2c94085ff502ec5ce6d8598ec6b3c10e7a4b5510
Diffstat (limited to 'libc/stdio/stdio.cpp')
-rw-r--r-- | libc/stdio/stdio.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libc/stdio/stdio.cpp b/libc/stdio/stdio.cpp index b0f5c607f..cd4be2e76 100644 --- a/libc/stdio/stdio.cpp +++ b/libc/stdio/stdio.cpp @@ -132,6 +132,13 @@ static glue* moreglue(int n) { return g; } +static inline void free_fgetln_buffer(FILE* fp) { + if (__predict_false(fp->_lb._base != nullptr)) { + free(fp->_lb._base); + fp->_lb._base = nullptr; + } +} + /* * Find a free FILE for fopen et al. */ @@ -326,7 +333,7 @@ FILE* freopen(const char* file, const char* mode, FILE* fp) { if (HASUB(fp)) FREEUB(fp); _UB(fp)._size = 0; WCIO_FREE(fp); - if (HASLB(fp)) FREELB(fp); + free_fgetln_buffer(fp); fp->_lb._size = 0; if (fd < 0) { // Did not get it after all. @@ -386,7 +393,7 @@ int fclose(FILE* fp) { } if (fp->_flags & __SMBF) free(fp->_bf._base); if (HASUB(fp)) FREEUB(fp); - if (HASLB(fp)) FREELB(fp); + free_fgetln_buffer(fp); // Poison this FILE so accesses after fclose will be obvious. fp->_file = -1; |