=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: vkd3d-shader: Improve asserts for write mask component count.

Alexandre Julliard julliard at winehq.org
Wed May 1 15:58:16 CDT 2019


Module: vkd3d
Branch: master
Commit: de3423e98e82fb39ea4860bbb42a1e21d1b7fb9c
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=de3423e98e82fb39ea4860bbb42a1e21d1b7fb9c

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Tue Apr 30 14:33:47 2019 +0200

vkd3d-shader: Improve asserts for write mask component count.

Helps Clang Static Analyzer.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/vkd3d_shader_private.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h
index 73ba93f..54d0705 100644
--- a/libs/vkd3d-shader/vkd3d_shader_private.h
+++ b/libs/vkd3d-shader/vkd3d_shader_private.h
@@ -883,13 +883,14 @@ static inline unsigned int vkd3d_write_mask_get_component_idx(DWORD write_mask)
 
 static inline unsigned int vkd3d_write_mask_component_count(DWORD write_mask)
 {
-    assert(write_mask);
-    return vkd3d_popcount(write_mask & VKD3DSP_WRITEMASK_ALL);
+    unsigned int count = vkd3d_popcount(write_mask & VKD3DSP_WRITEMASK_ALL);
+    assert(1 <= count && count <= VKD3D_VEC4_SIZE);
+    return count;
 }
 
 static inline unsigned int vkd3d_write_mask_from_component_count(unsigned int component_count)
 {
-    assert(component_count <= 4);
+    assert(component_count <= VKD3D_VEC4_SIZE);
     return (VKD3DSP_WRITEMASK_0 << component_count) - 1;
 }
 




More information about the wine-cvs mailing list