On 6/3/22 11:39, Dmitry Timoshkov wrote:
Rémi Bernon <wine(a)gitlab.winehq.org> wrote:
- char *buf, *cur, *tmp; + char *buf, *cur; int count = 0, buf_size = 16 * sizeof(struct hardware_msg_data);
if (!req->buffer_size) buf = NULL; @@ -3373,13 +3373,13 @@ DECL_HANDLER(get_rawinput_buffer) if (cur + data->size > buf + buf_size) { buf_size += buf_size / 2 + extra_size; - if (!(tmp = realloc( buf, buf_size ))) + cur = (char *)(cur - buf); + if (!(buf = realloc( buf, buf_size ))) { set_error( STATUS_NO_MEMORY ); return; } - cur = tmp + (cur - buf); - buf = tmp; + cur = buf + (size_t)cur; }
Reusing 'cur' as an offset doesn't look very elegant to me. Perhaps a new variable to hold the offset could be more appropriate here?
I actually agree, I considered renaming the variable to "pos", which could maybe do better as both a position or an offset in the buffer, but maybe changing the code to use buf + offset everywhere would be better. It was a bigger diff though, so it made the change less obvious. -- Rémi Bernon <rbernon(a)codeweavers.com>