diff options
Diffstat (limited to 'src/java_uescape.cc')
| -rw-r--r-- | src/java_uescape.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/java_uescape.cc b/src/java_uescape.cc index 925b050..3951b5f 100644 --- a/src/java_uescape.cc +++ b/src/java_uescape.cc @@ -46,9 +46,8 @@ class UnicodeEscapeReader { if (fill_ == 0) { // Optimize for the case when there are no unicode escapes. auto ret = reader_->read(dst, max); - if (!ret.has_value() || ret.value() == 0) { + if (!ret.has_value()) return ret; - } eof = false; state.rstart = reinterpret_cast<T*>(dst); @@ -63,10 +62,14 @@ class UnicodeEscapeReader { auto ret = reader_->read(buffer_.get() + fill_, (kBufferSize - fill_) * sizeof(T)); if (!ret.has_value()) { - return ret; + if (ret.error() != io::ReadError::Eof) { + return ret; + } + eof = true; + } else { + eof = false; + fill_ += ret.value() / sizeof(T); } - eof = ret.value() == 0; - fill_ += ret.value() / sizeof(T); state.rstart = buffer_.get(); state.rend = buffer_.get() + fill_; @@ -228,7 +231,7 @@ class UnicodeEscapeReader { fill_ += avail; } - // We can't return zero, that is treated as EOF, we need to read more. + // We shouldn't return zero, we should read more if we can. if (state.wptr == state.wstart) { if (fill_ > 0) { return read(state.wstart, (state.wend - state.wstart) * sizeof(T)); |
