# HG changeset patch # User Matti Hamalainen # Date 1562226856 -10800 # Node ID b5abfff07ca9222fe40c669392a73efe7834883e # Parent 39b4e06785f5d2a8b45b7f3a0dd845a5e315193a Add new DMGrowBuf helper functions dmGrowBufCopyOffsSize() and dmGrowBufConstCopyOffsSize(). diff -r 39b4e06785f5 -r b5abfff07ca9 src/dmgrowbuf.c --- 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" diff -r 39b4e06785f5 -r b5abfff07ca9 src/dmgrowbuf.h --- 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);