Mercurial > hg > dmlib
diff src/dmgrowbuf.c @ 1831:ce1a734b016f
Change the logic of how DMGrowBuf works in "backwards" growing mode. Adjust
the code that uses this as well.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 22 Jun 2018 16:33:27 +0300 |
parents | 3d4bb20f6739 |
children | 732fa926a5ef |
line wrap: on
line diff
--- a/src/dmgrowbuf.c Fri Jun 22 16:17:06 2018 +0300 +++ b/src/dmgrowbuf.c Fri Jun 22 16:33:27 2018 +0300 @@ -256,13 +256,13 @@ { if (buf->literal) { - buf->offs -= len; - memcpy(buf->data + buf->offs, data, len); + for (size_t n = 0; n < len; n++) + buf->data[--buf->offs] = data[len - n]; } else { for (size_t n = 0; n < len; n++) - buf->data[buf->offs--] = data[n]; + buf->data[--buf->offs] = data[n]; } } else @@ -280,11 +280,10 @@ if (!dmGrowBufGrow(buf, sizeof(Uint8))) return FALSE; - buf->data[buf->offs] = value; if (buf->backwards) - buf->offs--; + buf->data[--buf->offs] = value; else - buf->offs++; + buf->data[buf->offs++] = value; return TRUE; } @@ -371,7 +370,7 @@ if (buf->backwards) { if (buf->offs > 0) - *value = buf->data[buf->offs--]; + *value = buf->data[--buf->offs]; else return FALSE; }