- dst[dst_loc] |= *src++;
- memcpy(&dst[dst_loc + 1], src, rawbytes - 1);
+ rb_src = rc->buf + OPUS_MAX_PACKET_SIZE + 12 - rc->rb.bytes;
+ rb_dst = dst + FFMAX(size - rc->rb.bytes, 0);
+ lap = &dst[rng_bytes] - rb_dst;
+ for (i = 0; i < lap; i++)
+ rb_dst[i] |= rb_src[i];
+ memcpy(&rb_dst[lap], &rb_src[lap], FFMAX(rc->rb.bytes - lap, 0));