d3dx9: Make the assert() in regstore_set_values() a bit more strict.

Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Matteo Bruni 2017-06-21 21:54:21 +02:00 committed by Alexandre Julliard
parent 362ceb2e56
commit bd7a12b23c
1 changed files with 7 additions and 4 deletions

View File

@ -372,14 +372,17 @@ static void regstore_set_modified(struct d3dx_regstore *rs, unsigned int table,
static void regstore_set_values(struct d3dx_regstore *rs, unsigned int table, const void *data,
unsigned int start_offset, unsigned int count)
{
void *out;
BYTE *dst = rs->tables[table];
const BYTE *src = data;
unsigned int size;
if (!count)
return;
out = (BYTE *)rs->tables[table] + start_offset * table_info[table].component_size;
assert(data != out);
memcpy(out, data, count * table_info[table].component_size);
dst += start_offset * table_info[table].component_size;
size = count * table_info[table].component_size;
assert((src < dst && size <= dst - src) || (src > dst && size <= src - dst));
memcpy(dst, src, size);
regstore_set_modified(rs, table, start_offset, count);
}