From 19488ee125734c616559a6ad94369bc28feddc7e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 21 Jun 2019 16:24:56 +0200 Subject: Fix (harmless) Cycles ASAN warnings --- intern/cycles/blender/blender_camera.cpp | 22 +++++++++++++++++++--- intern/cycles/graph/node.cpp | 4 +++- intern/cycles/render/camera.cpp | 2 ++ intern/cycles/util/util_array.h | 13 ++++++++++--- 4 files changed, 34 insertions(+), 7 deletions(-) (limited to 'intern/cycles') diff --git a/intern/cycles/blender/blender_camera.cpp b/intern/cycles/blender/blender_camera.cpp index 92dc8a8a4c6..da43f94708c 100644 --- a/intern/cycles/blender/blender_camera.cpp +++ b/intern/cycles/blender/blender_camera.cpp @@ -91,16 +91,31 @@ static void blender_camera_init(BlenderCamera *bcam, BL::RenderSettings &b_rende { memset((void *)bcam, 0, sizeof(BlenderCamera)); + bcam->nearclip = 1e-5f; + bcam->farclip = 1e5f; + bcam->type = CAMERA_PERSPECTIVE; + bcam->ortho_scale = 1.0f; + + bcam->lens = 50.0f; + bcam->shuttertime = 1.0f; + + bcam->rolling_shutter_type = Camera::ROLLING_SHUTTER_NONE; + bcam->rolling_shutter_duration = 0.1f; + + bcam->aperturesize = 0.0f; + bcam->apertureblades = 0; + bcam->aperturerotation = 0.0f; + bcam->focaldistance = 10.0f; + bcam->zoom = 1.0f; bcam->pixelaspect = make_float2(1.0f, 1.0f); + bcam->aperture_ratio = 1.0f; + bcam->sensor_width = 36.0f; bcam->sensor_height = 24.0f; bcam->sensor_fit = BlenderCamera::AUTO; - bcam->shuttertime = 1.0f; bcam->motion_position = Camera::MOTION_POSITION_CENTER; - bcam->rolling_shutter_type = Camera::ROLLING_SHUTTER_NONE; - bcam->rolling_shutter_duration = 0.1f; bcam->border.right = 1.0f; bcam->border.top = 1.0f; bcam->pano_viewplane.right = 1.0f; @@ -108,6 +123,7 @@ static void blender_camera_init(BlenderCamera *bcam, BL::RenderSettings &b_rende bcam->viewport_camera_border.right = 1.0f; bcam->viewport_camera_border.top = 1.0f; bcam->offscreen_dicing_scale = 1.0f; + bcam->matrix = transform_identity(); /* render resolution */ bcam->full_width = render_resolution_x(b_render); diff --git a/intern/cycles/graph/node.cpp b/intern/cycles/graph/node.cpp index fc7daaeeaa6..4f79a7518dc 100644 --- a/intern/cycles/graph/node.cpp +++ b/intern/cycles/graph/node.cpp @@ -313,7 +313,9 @@ void Node::set_default_value(const SocketType &socket) { const void *src = socket.default_value; void *dst = ((char *)this) + socket.struct_offset; - memcpy(dst, src, socket.size()); + if (socket.size() > 0) { + memcpy(dst, src, socket.size()); + } } template diff --git a/intern/cycles/render/camera.cpp b/intern/cycles/render/camera.cpp index baa3ce77f84..7591d9dda0c 100644 --- a/intern/cycles/render/camera.cpp +++ b/intern/cycles/render/camera.cpp @@ -118,6 +118,8 @@ NODE_DEFINE(Camera) stereo_eye_enum.insert("right", STEREO_RIGHT); SOCKET_ENUM(stereo_eye, "Stereo Eye", stereo_eye_enum, STEREO_NONE); + SOCKET_BOOLEAN(use_spherical_stereo, "Use Spherical Stereo", false); + SOCKET_FLOAT(interocular_distance, "Interocular Distance", 0.065f); SOCKET_FLOAT(convergence_distance, "Convergence Distance", 30.0f * 0.065f); diff --git a/intern/cycles/util/util_array.h b/intern/cycles/util/util_array.h index 1d7e39344f6..db80ab474e0 100644 --- a/intern/cycles/util/util_array.h +++ b/intern/cycles/util/util_array.h @@ -63,7 +63,9 @@ template class arra } else { data_ = mem_allocate(from.datasize_); - memcpy(data_, from.data_, from.datasize_ * sizeof(T)); + if (from.datasize_ > 0) { + memcpy(data_, from.data_, from.datasize_ * sizeof(T)); + } datasize_ = from.datasize_; capacity_ = datasize_; } @@ -73,7 +75,9 @@ template class arra { if (this != &from) { resize(from.size()); - memcpy((void *)data_, from.data_, datasize_ * sizeof(T)); + if (datasize_ > 0) { + memcpy((void *)data_, from.data_, datasize_ * sizeof(T)); + } } return *this; @@ -83,7 +87,7 @@ template class arra { resize(from.size()); - if (from.size() > 0) { + if (from.size() > 0 && datasize_ > 0) { memcpy(data_, &from[0], datasize_ * sizeof(T)); } @@ -100,6 +104,9 @@ template class arra if (datasize_ != other.datasize_) { return false; } + if (datasize_ == 0) { + return true; + } return memcmp(data_, other.data_, datasize_ * sizeof(T)) == 0; } -- cgit v1.2.3