[common] obey the destination buffer size

This commit is contained in:
Geoffrey McRae 2019-10-14 18:08:06 +11:00
parent 9377fdfc37
commit e1bfb1234b
2 changed files with 12 additions and 4 deletions

View File

@ -1 +1 @@
B1-11-g5f1d17ba1f+1 B1-12-g9377fdfc37+1

View File

@ -40,9 +40,13 @@ bool framebuffer_read(const FrameBuffer frame, void * dst, size_t size)
/* copy what we can */ /* copy what we can */
uint64_t avail = frame->wp - rp; uint64_t avail = frame->wp - rp;
avail = avail > size ? size : avail;
memcpy(d, frame->data + rp, avail); memcpy(d, frame->data + rp, avail);
rp += avail;
d += avail; rp += avail;
d += avail;
size -= avail;
} }
return true; return true;
} }
@ -57,9 +61,13 @@ bool framebuffer_read_fn(const FrameBuffer frame, FrameBufferReadFn fn, size_t s
/* copy what we can */ /* copy what we can */
uint64_t avail = frame->wp - rp; uint64_t avail = frame->wp - rp;
avail = avail > size ? size : avail;
if (!fn(opaque, frame->data + rp, avail)) if (!fn(opaque, frame->data + rp, avail))
return false; return false;
rp += avail;
rp += avail;
size -= avail;
} }
return true; return true;