Otherwise a source bvector that's using tiny storage has its bits
duplicated into a malloc'd area when the destination's tiny storage was
sufficient.
if (dest->bits != dest->tiny)
free(dest->bits);
if (dest->bits != dest->tiny)
free(dest->bits);
- dest->bits = mh_xmalloc (bytes);
+ if (bytes <= sizeof dest->tiny)
+ dest->bits = dest->tiny;
+ else
+ dest->bits = mh_xmalloc (bytes);
memcpy (dest->bits, src->bits, bytes);
dest->maxsize = src->maxsize;
}
memcpy (dest->bits, src->bits, bytes);
dest->maxsize = src->maxsize;
}