summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <remi@verschelde.fr>2021-11-01 11:18:11 +0100
committerGitHub <noreply@github.com>2021-11-01 11:18:11 +0100
commit210e6cc167b5003d2095e6667f4b34818a4a16f3 (patch)
treefcd30b3b54977522212f394b4ec756146bbae0f7
parentefbbd14af3f3325c4201518528e7acb93d60098a (diff)
parent6b04f08b28fb1761f7a27d4ce876c52b1b210d5c (diff)
Merge pull request #54459 from rxlecky/fix-multimesh-buffer-overflow-53603
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.cpp b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
index 99d1b88947..5c7fee7ec9 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
@@ -4419,7 +4419,8 @@ void RendererStorageRD::_update_dirty_multimeshes() {
if (multimesh->data_cache_dirty_regions[i]) {
uint32_t offset = i * region_size;
uint32_t size = multimesh->stride_cache * (uint32_t)multimesh->instances * (uint32_t)sizeof(float);
- RD::get_singleton()->buffer_update(multimesh->buffer, offset, MIN(region_size, size - offset), &data[i * region_size]);
+ uint32_t region_start_index = multimesh->stride_cache * MULTIMESH_DIRTY_REGION_SIZE * i;
+ RD::get_singleton()->buffer_update(multimesh->buffer, offset, MIN(region_size, size - offset), &data[region_start_index]);
}
}
}