diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-09-19 21:02:03 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-09-19 21:02:12 +0300 |
commit | 73ac72fa89a2a54d18b806cc4f28392c954ee13e (patch) | |
tree | 923eeef22361eb0d9d3ebafd0a98c1c12c8e2d54 /source | |
parent | 7ad8272952c6465dca67b7ece2e80ab6b51a4ed9 (diff) |
DRW: Fix crash when new shader requires 0 customdata layers
It was using last cache->auto_layer_len which led to a buffer overflow.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_mesh.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c index fe24ad707c1..513a7372ad4 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.c +++ b/source/blender/draw/intern/draw_cache_impl_mesh.c @@ -1927,6 +1927,7 @@ static GPUVertBuf *mesh_batch_cache_get_tri_shading_data(MeshRenderData *rdata, const uint tangent_len = rdata->cd.layers.tangent_len; const uint vcol_len = rdata->cd.layers.vcol_len; const uint layers_combined_len = uv_len + vcol_len + tangent_len; + cache->auto_layer_len = 0; if (layers_combined_len == 0) { return NULL; @@ -1951,7 +1952,6 @@ static GPUVertBuf *mesh_batch_cache_get_tri_shading_data(MeshRenderData *rdata, uint auto_names_len = 0; uint auto_ofs = 0; uint auto_id = 0; - cache->auto_layer_len = 0; for (uint i = 0; i < uv_len; i++) { const char *attrib_name = mesh_render_data_uv_auto_layer_uuid_get(rdata, i); auto_names_len += strlen(attrib_name) + 2; /* include null terminator and b prefix. */ |