Mercurial > hg > dmlib
changeset 2298:b5abfff07ca9
Add new DMGrowBuf helper functions dmGrowBufCopyOffsSize() and
dmGrowBufConstCopyOffsSize().
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 04 Jul 2019 10:54:16 +0300 |
parents | 39b4e06785f5 |
children | ad019d930401 |
files | src/dmgrowbuf.c src/dmgrowbuf.h |
diffstat | 2 files changed, 24 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dmgrowbuf.c Thu Jul 04 10:51:02 2019 +0300 +++ b/src/dmgrowbuf.c Thu Jul 04 10:54:16 2019 +0300 @@ -144,6 +144,15 @@ } +DMGrowBuf * dmGrowBufConstCopyOffsSize(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t len) +{ + if (src->len < offs + len) + return NULL; + + return dmGrowBufConstCreateFrom(dst, src->data + offs, len); +} + + DMGrowBuf * dmGrowBufCopyOffs(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t enlarge) { DMGrowBuf tmp; @@ -152,6 +161,18 @@ } +DMGrowBuf * dmGrowBufCopyOffsSize(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t len, const size_t enlarge) +{ + DMGrowBuf tmp; + + if (src->len < offs + len) + return NULL; + + return dmGrowBufCopy(dst, + dmGrowBufConstCreateFrom(&tmp, src->data + offs, len), enlarge); +} + + static BOOL dmGrowBufRealloc(DMGrowBuf *buf, const size_t nsize, const BOOL clear) { DM_DBG("dmGrowBufRealloc(%p):\n"
--- a/src/dmgrowbuf.h Thu Jul 04 10:51:02 2019 +0300 +++ b/src/dmgrowbuf.h Thu Jul 04 10:54:16 2019 +0300 @@ -38,8 +38,11 @@ DMGrowBuf * dmGrowBufCopy(DMGrowBuf *dst, const DMGrowBuf *src, const size_t enlarge); DMGrowBuf * dmGrowBufCopyOffs(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t enlarge); +DMGrowBuf * dmGrowBufCopyOffsSize(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t len, const size_t enlarge); + DMGrowBuf * dmGrowBufConstCopy(DMGrowBuf *dst, const DMGrowBuf *src); DMGrowBuf * dmGrowBufConstCopyOffs(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs); +DMGrowBuf * dmGrowBufConstCopyOffsSize(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t len); DMGrowBuf * dmGrowBufConstCreateFrom(DMGrowBuf *buf, Uint8 *data, const size_t len);