[Bf-blender-cvs] [0de9081e89f] master: Sculpt: fix missing nullptr check in pbvh draw

Joseph Eagar noreply at git.blender.org
Thu Sep 29 08:33:37 CEST 2022


Commit: 0de9081e89f5f9cd4573062ab5e0e6442f9fa28d
Author: Joseph Eagar
Date:   Wed Sep 28 23:33:02 2022 -0700
Branches: master
https://developer.blender.org/rB0de9081e89f5f9cd4573062ab5e0e6442f9fa28d

Sculpt: fix missing nullptr check in pbvh draw

Check for nullptr when building mask vbos.

===================================================================

M	source/blender/draw/intern/draw_pbvh.cc

===================================================================

diff --git a/source/blender/draw/intern/draw_pbvh.cc b/source/blender/draw/intern/draw_pbvh.cc
index 7b36cb16cac..432ebbe9452 100644
--- a/source/blender/draw/intern/draw_pbvh.cc
+++ b/source/blender/draw/intern/draw_pbvh.cc
@@ -533,12 +533,19 @@ struct PBVHBatches {
       case CD_PBVH_MASK_TYPE: {
         float *mask = static_cast<float *>(CustomData_get_layer(args->vdata, CD_PAINT_MASK));
 
-        foreach_faces(
-            [&](int /*buffer_i*/, int /*tri_i*/, int vertex_i, const MLoopTri * /*tri*/) {
-              *static_cast<uchar *>(GPU_vertbuf_raw_step(&access)) = (uchar)(mask[vertex_i] *
-                                                                             255.0f);
-            });
-
+        if (mask) {
+          foreach_faces(
+              [&](int /*buffer_i*/, int /*tri_i*/, int vertex_i, const MLoopTri * /*tri*/) {
+                *static_cast<uchar *>(GPU_vertbuf_raw_step(&access)) = (uchar)(mask[vertex_i] *
+                                                                               255.0f);
+              });
+        }
+        else {
+          foreach_faces(
+              [&](int /*buffer_i*/, int /*tri_i*/, int vertex_i, const MLoopTri * /*tri*/) {
+                *static_cast<uchar *>(GPU_vertbuf_raw_step(&access)) = 0;
+              });
+        }
         break;
       }
       case CD_PBVH_FSET_TYPE: {
@@ -731,7 +738,7 @@ struct PBVHBatches {
 
         if (cd_mask == -1) {
           foreach_bmesh(
-              [&](BMLoop * /*l*/) { *static_cast<float *>(GPU_vertbuf_raw_step(&access)) = 255; });
+              [&](BMLoop * /*l*/) { *static_cast<float *>(GPU_vertbuf_raw_step(&access)) = 0; });
         }
         else {
           foreach_bmesh([&](BMLoop *l) {



More information about the Bf-blender-cvs mailing list