File tree Expand file tree Collapse file tree 1 file changed +10
-3
lines changed Expand file tree Collapse file tree 1 file changed +10
-3
lines changed Original file line number Diff line number Diff line change @@ -570,7 +570,7 @@ class BufferedStream : public ModifyingStream {
570
570
if (buffer.isEmpty ()) {
571
571
return readExt (data, len);
572
572
} else {
573
- refill ();
573
+ refill (len );
574
574
return buffer.readArray (data, len);
575
575
}
576
576
}
@@ -599,12 +599,19 @@ class BufferedStream : public ModifyingStream {
599
599
Print *p_out = nullptr ;
600
600
Stream *p_in = nullptr ;
601
601
602
- // refills the buffer with data from the source
602
+ // / refills the buffer with data from the source
603
603
void refill () {
604
- size_t result = readExt (buffer.address (), buffer.size ());
604
+ buffer.trim ();
605
+ size_t result = readExt (buffer.address (), buffer.availableForWrite ());
605
606
buffer.setAvailable (result);
606
607
}
607
608
609
+ // / refill only if not enough data
610
+ void refill (size_t len) {
611
+ if (buffer.available () >= len) return ;
612
+ refill ();
613
+ }
614
+
608
615
virtual size_t writeExt (const uint8_t *data, size_t len) {
609
616
return p_out == nullptr ? 0 : p_out->write (data, len);
610
617
}
You can’t perform that action at this time.
0 commit comments