Fix (harmless) Cycles ASAN warnings

This commit is contained in:
Brecht Van Lommel 2019-06-21 16:24:56 +02:00
parent a887e1ea43
commit 19488ee125
5 changed files with 35 additions and 8 deletions

View File

@ -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);

View File

@ -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<typename T>

View File

@ -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);

View File

@ -63,7 +63,9 @@ template<typename T, size_t alignment = MIN_ALIGNMENT_CPU_DATA_TYPES> 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<typename T, size_t alignment = MIN_ALIGNMENT_CPU_DATA_TYPES> 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<typename T, size_t alignment = MIN_ALIGNMENT_CPU_DATA_TYPES> 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<typename T, size_t alignment = MIN_ALIGNMENT_CPU_DATA_TYPES> class arra
if (datasize_ != other.datasize_) {
return false;
}
if (datasize_ == 0) {
return true;
}
return memcmp(data_, other.data_, datasize_ * sizeof(T)) == 0;
}

View File

@ -213,7 +213,7 @@ size_t BLI_timecode_string_from_time_simple(char *str,
const int hr = ((int)time_seconds) / (60 * 60);
const int min = (((int)time_seconds) / 60) % 60;
const int sec = ((int)time_seconds) % 60;
const int hun = ((int)(time_seconds * 100.0)) % 100;
const int hun = ((int)(fmod(time_seconds, 1.0) * 100));
if (hr) {
rlen = BLI_snprintf(str, maxncpy, "%.2d:%.2d:%.2d.%.2d", hr, min, sec, hun);