[PATCH] d3dx9: Make the assert() in regstore_set_values() a bit more strict.
Matteo Bruni
mbruni at codeweavers.com
Wed Jun 21 14:54:21 CDT 2017
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
dlls/d3dx9_36/preshader.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/dlls/d3dx9_36/preshader.c b/dlls/d3dx9_36/preshader.c
index 2785ca3341..7ca0c8f39a 100644
--- a/dlls/d3dx9_36/preshader.c
+++ b/dlls/d3dx9_36/preshader.c
@@ -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);
}
--
2.13.0
More information about the wine-patches
mailing list