Skip to content

Commit 70e327e

Browse files
author
git apple-llvm automerger
committed
Merge commit 'ea16f7d9dbad' from llvm.org/main into next
2 parents bbbf42b + ea16f7d commit 70e327e

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

libcxx/include/fstream

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,14 @@ protected:
315315
traits_type::copy(__str, this->gptr(), __n);
316316
this->__gbump_ptrdiff(__n);
317317
}
318-
if (__len - __n >= this->egptr() - this->eback())
319-
return std::fread(__str + __n, sizeof(char_type), __len - __n, __file_);
318+
const streamsize __remainder = __len - __n;
319+
const streamsize __buffer_space = this->egptr() - this->eback();
320+
321+
if (__remainder >= __buffer_space)
322+
return std::fread(__str + __n, sizeof(char_type), __remainder, __file_) + __n;
323+
else if (__remainder > 0)
324+
return basic_streambuf<_CharT, _Traits>::xsgetn(__str + __n, __remainder) + __n;
325+
return __n;
320326
}
321327
return basic_streambuf<_CharT, _Traits>::xsgetn(__str, __len);
322328
}

0 commit comments

Comments
 (0)