Fix: Texture paint color jitter dereference of uninitialized optional

The value isn't created unless jitter is enabled, but it was always
retrieved for a function argument. The uninitialized memory wasn't read,
but it caused a crash in debug builds.

Pull Request: https://projects.blender.org/blender/blender/pulls/139854
This commit is contained in:
Hans Goudey
2025-06-04 21:27:16 +02:00
committed by Hans Goudey
parent 46bc894570
commit c9bb7f0b23
4 changed files with 8 additions and 6 deletions

View File

@@ -373,7 +373,7 @@ bool paint_use_opacity_masking(const Scene *scene, const Paint *paint, const Bru
void paint_brush_color_get(Scene *scene,
const Paint *paint,
Brush *br,
blender::float3 &initial_hsv_jitter,
std::optional<blender::float3> &initial_hsv_jitter,
bool color_correction,
bool invert,
float distance,
@@ -410,7 +410,7 @@ void paint_brush_color_get(Scene *scene,
else if (color_jitter_settings) {
copy_v3_v3(r_color,
BKE_paint_randomize_color(*color_jitter_settings,
initial_hsv_jitter,
*initial_hsv_jitter,
distance,
pressure,
BKE_brush_color_get(scene, paint, br)));

View File

@@ -405,7 +405,7 @@ static ImBuf *brush_painter_imbuf_new(
paint_brush_color_get(scene,
paint,
brush,
*painter->initial_hsv_jitter,
painter->initial_hsv_jitter,
use_color_correction,
cache->invert,
distance,
@@ -498,7 +498,7 @@ static void brush_painter_imbuf_update(BrushPainter *painter,
paint_brush_color_get(scene,
paint,
brush,
*painter->initial_hsv_jitter,
painter->initial_hsv_jitter,
use_color_correction,
cache->invert,
0.0f,

View File

@@ -5773,7 +5773,7 @@ static void paint_proj_stroke_ps(const bContext * /*C*/,
paint_brush_color_get(scene,
paint,
brush,
*ps_handle->initial_hsv_jitter,
ps_handle->initial_hsv_jitter,
false,
ps->mode == BRUSH_STROKE_INVERT,
distance,

View File

@@ -22,6 +22,8 @@
#include "DNA_vec_types.h"
#include "DNA_windowmanager_enums.h"
#include <optional>
enum class PaintMode : int8_t;
struct ARegion;
@@ -350,7 +352,7 @@ void paint_proj_stroke_done(void *ps_handle_p);
void paint_brush_color_get(Scene *scene,
const Paint *paint,
Brush *br,
blender::float3 &initial_hsv_jitter,
std::optional<blender::float3> &initial_hsv_jitter,
bool color_correction,
bool invert,
float distance,