Henri Verbeet : wined3d: Don't write past the end of the buffer' s conversion_map.
Module: wine Branch: master Commit: a4fad54134ec8f547218b61e2a20e87c6692ceaa URL: http://source.winehq.org/git/wine.git/?a=commit;h=a4fad54134ec8f547218b61e2a... Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Sun Apr 11 21:47:48 2010 +0200 wined3d: Don't write past the end of the buffer's conversion_map. --- dlls/wined3d/buffer.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index 8bb1f63..a8fc0d1 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -275,12 +275,13 @@ static BOOL buffer_process_converted_attribute(struct wined3d_buffer *This, attrib_size = attrib->format_desc->component_count * attrib->format_desc->component_size; for (i = 0; i < attrib_size; ++i) { - if (This->conversion_map[data + i] != conversion_type) + DWORD_PTR idx = (data + i) % This->stride; + if (This->conversion_map[idx] != conversion_type) { - TRACE("Byte %ld in vertex changed\n", i + data); - TRACE("It was type %d, is %d now\n", This->conversion_map[data + i], conversion_type); + TRACE("Byte %ld in vertex changed\n", idx); + TRACE("It was type %d, is %d now\n", This->conversion_map[idx], conversion_type); ret = TRUE; - This->conversion_map[data + i] = conversion_type; + This->conversion_map[idx] = conversion_type; } }
participants (1)
-
Alexandre Julliard