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:
@@ -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)));
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user