Skip to content

Commit 1f8a8cb

Browse files
Refactor fillBuffer() for clarity and speed
1 parent f1fce23 commit 1f8a8cb

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/OpenStreetMap-esp32.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -291,12 +291,20 @@ bool OpenStreetMap::fillBuffer(WiFiClient *stream, MemoryBuffer &buffer, size_t
291291
unsigned long lastReadTime = millis();
292292
while (readSize < contentSize)
293293
{
294-
int availableData = stream->available();
294+
const size_t availableData = stream->available();
295295
if (availableData)
296296
{
297-
int bytesRead = stream->readBytes(buffer.get() + readSize, availableData);
298-
readSize += bytesRead;
299-
lastReadTime = millis();
297+
const size_t remaining = contentSize - readSize;
298+
const size_t toRead = std::min(availableData, remaining);
299+
const int bytesRead = stream->readBytes(buffer.get() + readSize, toRead);
300+
301+
if (bytesRead > 0)
302+
{
303+
readSize += bytesRead;
304+
lastReadTime = millis();
305+
}
306+
else
307+
delay(1); // Give system a breath
300308
}
301309
else
302310
{

0 commit comments

Comments
 (0)