Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-07-02 19:16:37 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-07-02 19:16:37 +0300
commit73c577d46a2fd99c519ce7ef0fd9deb3b914099f (patch)
tree6550ece85e7ed1208087e55ca3a489b427cf916a
parente5767eaad1c48a23eb3d8fed4616722189a70aa1 (diff)
Painting: fix uninitialized variable use
-rw-r--r--source/blender/editors/sculpt_paint/paint_stroke.c35
1 files changed, 23 insertions, 12 deletions
diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c
index a194b1b3e90..acd62cb936e 100644
--- a/source/blender/editors/sculpt_paint/paint_stroke.c
+++ b/source/blender/editors/sculpt_paint/paint_stroke.c
@@ -214,13 +214,14 @@ static bool paint_tool_require_location(Brush *brush, ePaintMode mode)
}
/* Initialize the stroke cache variants from operator properties */
-static bool paint_brush_update(bContext *C,
- Brush *brush,
- ePaintMode mode,
- struct PaintStroke *stroke,
- const float mouse_init[2],
- float mouse[2], float pressure,
- float location[3])
+static bool paint_brush_update(
+ bContext *C,
+ Brush *brush,
+ ePaintMode mode,
+ struct PaintStroke *stroke,
+ const float mouse_init[2],
+ float mouse[2], float pressure,
+ float r_location[3], bool *r_location_is_set)
{
Scene *scene = CTX_data_scene(C);
UnifiedPaintSettings *ups = stroke->ups;
@@ -231,6 +232,7 @@ static bool paint_brush_update(bContext *C,
bool is_dry_run = false;
bool do_random = false;
bool do_random_mask = false;
+ *r_location_is_set = false;
/* XXX: Use pressure value from first brush step for brushes which don't
* support strokes (grab, thumb). They depends on initial state and
* brush coord/pressure/etc.
@@ -329,10 +331,11 @@ static bool paint_brush_update(bContext *C,
halfway[1] = dy * 0.5f + stroke->initial_mouse[1];
if (stroke->get_location) {
- if (stroke->get_location(C, location, halfway)) {
+ if (stroke->get_location(C, r_location, halfway)) {
hit = true;
location_sampled = true;
location_success = true;
+ *r_location_is_set = true;
}
else if (!paint_tool_require_location(brush, mode)) {
hit = true;
@@ -395,14 +398,17 @@ static bool paint_brush_update(bContext *C,
if (!location_sampled) {
if (stroke->get_location) {
- if (stroke->get_location(C, location, mouse))
+ if (stroke->get_location(C, r_location, mouse)) {
location_success = true;
+ *r_location_is_set = true;
+ }
else if (!paint_tool_require_location(brush, mode))
location_success = true;
}
else {
- zero_v3(location);
+ zero_v3(r_location);
location_success = true;
+ /* don't set 'r_location_is_set', since we don't want to use the value. */
}
}
@@ -481,8 +487,13 @@ static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, const float
}
- ups->last_hit = paint_brush_update(C, brush, mode, stroke, mouse_in, mouse_out, pressure, location);
- copy_v3_v3(ups->last_location, location);
+ bool is_location_is_set;
+ ups->last_hit = paint_brush_update(
+ C, brush, mode, stroke, mouse_in, mouse_out, pressure,
+ location, &is_location_is_set);
+ if (is_location_is_set) {
+ copy_v3_v3(ups->last_location, location);
+ }
if (!ups->last_hit) {
return;
}