return (ENOMEM);
}
- memcpy(ret, pool->v_buf, pool->v_off);
+ if (pool->v_off > 0) {
+ memcpy(ret, pool->v_buf, pool->v_off);
+ }
free(pool->v_basebuf);
pool->v_basebuf = pool->v_buf = ret;
pool->v_size = size;
return KNOT_ENOMEM;
}
- /* Copy the old data. */
- memcpy(rr_info, pkt->rr_info, pkt->rrset_allocd * sizeof(knot_rrinfo_t));
- memcpy(rr, pkt->rr, pkt->rrset_allocd * sizeof(knot_rrset_t));
-
- /* Reassign and free old data. */
- mm_free(&pkt->mm, pkt->rr);
- mm_free(&pkt->mm, pkt->rr_info);
+ /* Copy and free the old data, if any. */
+ if (pkt->rrset_allocd > 0) {
+ memcpy(rr_info, pkt->rr_info, pkt->rrset_allocd * sizeof(knot_rrinfo_t));
+ memcpy(rr, pkt->rr, pkt->rrset_allocd * sizeof(knot_rrset_t));
+ mm_free(&pkt->mm, pkt->rr);
+ mm_free(&pkt->mm, pkt->rr_info);
+ }
pkt->rr = rr;
pkt->rr_info = rr_info;
pkt->rrset_allocd = next_size;