From a0a5162545f7b12ddbf5f8c724c847c70ea35255 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Mon, 20 Oct 2014 12:35:35 +0200 Subject: Fix T42189 Own mistake - not copying enough data. --- source/blender/editors/space_view3d/view3d_select.c | 4 ++-- source/blender/editors/space_view3d/view3d_view.c | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) (limited to 'source') diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 11e7e492536..ccbbbf7413c 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -1181,14 +1181,14 @@ static short selectbuffer_ret_hits_15(unsigned int *UNUSED(buffer), const short static short selectbuffer_ret_hits_9(unsigned int *buffer, const short hits15, const short hits9) { const int offs = 4 * hits15; - memcpy(buffer, buffer + offs, 4 * hits9); + memcpy(buffer, buffer + offs, 4 * hits9 * sizeof (unsigned int)); return hits9; } static short selectbuffer_ret_hits_5(unsigned int *buffer, const short hits15, const short hits9, const short hits5) { const int offs = 4 * hits15 + 4 * hits9; - memcpy(buffer, buffer + offs, 4 * hits5); + memcpy(buffer, buffer + offs, 4 * hits5 * sizeof (unsigned int)); return hits5; } diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 7d3f7ce282e..858d001a381 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1047,7 +1047,7 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b Scene *scene = vc->scene; View3D *v3d = vc->v3d; ARegion *ar = vc->ar; - rctf rect, selrect; + rctf rect; short hits; const bool use_obedit_skip = (scene->obedit != NULL) && (vc->obedit == NULL); const bool do_passes = do_nearest && GPU_select_query_check_active(); @@ -1064,8 +1064,6 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b else { BLI_rctf_rcti_copy(&rect, input); } - - selrect = rect; view3d_winmatrix_set(ar, v3d, &rect); mul_m4_m4m4(vc->rv3d->persmat, vc->rv3d->winmat, vc->rv3d->viewmat); @@ -1079,9 +1077,9 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b ED_view3d_clipping_set(vc->rv3d); if (do_passes) - GPU_select_begin(buffer, bufsize, &selrect, GPU_SELECT_NEAREST_FIRST_PASS, 0); + GPU_select_begin(buffer, bufsize, &rect, GPU_SELECT_NEAREST_FIRST_PASS, 0); else - GPU_select_begin(buffer, bufsize, &selrect, GPU_SELECT_ALL, 0); + GPU_select_begin(buffer, bufsize, &rect, GPU_SELECT_ALL, 0); view3d_select_loop(vc, scene, v3d, ar, use_obedit_skip); @@ -1089,7 +1087,7 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b /* second pass, to get the closest object to camera */ if (do_passes) { - GPU_select_begin(buffer, bufsize, &selrect, GPU_SELECT_NEAREST_SECOND_PASS, hits); + GPU_select_begin(buffer, bufsize, &rect, GPU_SELECT_NEAREST_SECOND_PASS, hits); view3d_select_loop(vc, scene, v3d, ar, use_obedit_skip); -- cgit v1.2.3