In the special case for handling partial messages, the pointer
calculations were wrong, which would result in data corruption.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Reviewd-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
}
size1 = virt->in_buf_size - virt->in_buf_ofs;
if ((size_t)size1 > size) {
- virt->in_buf_ofs += size1 - size;
- memcpy(buffer, virt->in_buf_ptr, size);
+ memcpy(buffer, virt->in_buf_ptr + virt->in_buf_ofs, size);
+ virt->in_buf_ofs += size;
result += size;
break;
}