1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-24 15:26:15 +00:00

Zero initialize all pointer class and struct members

This prevents the pitfall of UB when checking if they have been
assigned something valid by comparing to nullptr.
This commit is contained in:
Rémi Verschelde
2022-04-04 15:06:57 +02:00
parent 53317bbe14
commit f8ab79e68a
258 changed files with 2398 additions and 2421 deletions

View File

@@ -332,7 +332,7 @@ class RenderForwardClustered : public RendererSceneRenderRD {
uint32_t instance_buffer_size[RENDER_LIST_MAX] = { 0, 0, 0 };
LocalVector<InstanceData> instance_data[RENDER_LIST_MAX];
LightmapCaptureData *lightmap_captures;
LightmapCaptureData *lightmap_captures = nullptr;
uint32_t max_lightmap_captures;
RID lightmap_capture_buffer;

View File

@@ -42,7 +42,7 @@ private:
static SceneShaderForwardClustered *singleton;
public:
RendererStorageRD *storage;
RendererStorageRD *storage = nullptr;
enum ShaderVersion {
SHADER_VERSION_DEPTH_PASS,
@@ -199,7 +199,7 @@ public:
}
struct MaterialData : public RendererRD::MaterialData {
ShaderData *shader_data;
ShaderData *shader_data = nullptr;
RID uniform_set;
uint64_t last_pass = 0;
uint32_t index = 0;

View File

@@ -328,7 +328,7 @@ protected:
uint32_t max_lightmaps;
RID lightmap_buffer;
LightmapCaptureData *lightmap_captures;
LightmapCaptureData *lightmap_captures = nullptr;
uint32_t max_lightmap_captures;
RID lightmap_capture_buffer;

View File

@@ -40,7 +40,7 @@ namespace RendererSceneRenderImplementation {
class SceneShaderForwardMobile {
private:
static SceneShaderForwardMobile *singleton;
RendererStorageRD *storage;
RendererStorageRD *storage = nullptr;
public:
enum ShaderVersion {
@@ -163,7 +163,7 @@ public:
}
struct MaterialData : public RendererRD::MaterialData {
ShaderData *shader_data;
ShaderData *shader_data = nullptr;
RID uniform_set;
uint64_t last_pass = 0;
uint32_t index = 0;

View File

@@ -57,7 +57,7 @@ class PipelineCacheRD {
RID pipeline;
};
Version *versions;
Version *versions = nullptr;
uint32_t version_count;
RID _generate_version(RD::VertexFormatID p_vertex_format_id, RD::FramebufferFormatID p_framebuffer_format_id, bool p_wireframe, uint32_t p_render_pass, uint32_t p_bool_specializations = 0);

View File

@@ -41,7 +41,7 @@
#include "servers/rendering/shader_compiler.h"
class RendererCanvasRenderRD : public RendererCanvasRender {
RendererStorageRD *storage;
RendererStorageRD *storage = nullptr;
enum {
BASE_UNIFORM_SET = 0,
@@ -200,7 +200,7 @@ class RendererCanvasRenderRD : public RendererCanvasRender {
}
struct CanvasMaterialData : public RendererRD::MaterialData {
CanvasShaderData *shader_data;
CanvasShaderData *shader_data = nullptr;
RID uniform_set;
virtual void set_render_priority(int p_priority) {}
@@ -361,7 +361,7 @@ class RendererCanvasRenderRD : public RendererCanvasRender {
uint32_t pad2;
};
LightUniform *light_uniforms;
LightUniform *light_uniforms = nullptr;
RID lights_uniform_buffer;
RID canvas_state_buffer;

View File

@@ -48,15 +48,15 @@
class RendererCompositorRD : public RendererCompositor {
protected:
UniformSetCacheRD *uniform_set_cache;
RendererCanvasRenderRD *canvas;
UniformSetCacheRD *uniform_set_cache = nullptr;
RendererCanvasRenderRD *canvas = nullptr;
RendererRD::CanvasTextureStorage *canvas_texture_storage;
RendererRD::MaterialStorage *material_storage;
RendererRD::MeshStorage *mesh_storage;
RendererRD::TextureStorage *texture_storage;
RendererRD::DecalAtlasStorage *decal_atlas_storage;
RendererStorageRD *storage;
RendererSceneRenderRD *scene;
RendererStorageRD *storage = nullptr;
RendererSceneRenderRD *scene = nullptr;
enum BlitMode {
BLIT_MODE_NORMAL,

View File

@@ -55,7 +55,7 @@ class RendererSceneRenderRD;
class RendererSceneGIRD {
private:
RendererStorageRD *storage;
RendererStorageRD *storage = nullptr;
/* VOXEL_GI INSTANCE */
@@ -331,8 +331,8 @@ public:
struct VoxelGIInstance {
// access to our containers
RendererStorageRD *storage;
RendererSceneGIRD *gi;
RendererStorageRD *storage = nullptr;
RendererSceneGIRD *gi = nullptr;
RID probe;
RID texture;
@@ -455,8 +455,8 @@ public:
};
// access to our containers
RendererStorageRD *storage;
RendererSceneGIRD *gi;
RendererStorageRD *storage = nullptr;
RendererSceneGIRD *gi = nullptr;
// used for rendering (voxelization)
RID render_albedo;

View File

@@ -92,7 +92,7 @@ class RendererSceneRenderRD : public RendererSceneRender {
friend RendererSceneGIRD;
protected:
RendererStorageRD *storage;
RendererStorageRD *storage = nullptr;
double time;
double time_step = 0;
@@ -314,10 +314,10 @@ private:
float shadows_quality_radius = 1.0;
float directional_shadow_quality_radius = 1.0;
float *directional_penumbra_shadow_kernel;
float *directional_soft_shadow_kernel;
float *penumbra_shadow_kernel;
float *soft_shadow_kernel;
float *directional_penumbra_shadow_kernel = nullptr;
float *directional_soft_shadow_kernel = nullptr;
float *penumbra_shadow_kernel = nullptr;
float *soft_shadow_kernel = nullptr;
int directional_penumbra_shadow_samples = 0;
int directional_soft_shadow_samples = 0;
int penumbra_shadow_samples = 0;
@@ -705,27 +705,27 @@ private:
template <class T>
struct InstanceSort {
float depth;
T *instance;
T *instance = nullptr;
bool operator<(const InstanceSort &p_sort) const {
return depth < p_sort.depth;
}
};
ReflectionData *reflections;
ReflectionData *reflections = nullptr;
InstanceSort<ReflectionProbeInstance> *reflection_sort;
uint32_t max_reflections;
RID reflection_buffer;
uint32_t max_reflection_probes_per_instance;
uint32_t reflection_count = 0;
DecalData *decals;
DecalData *decals = nullptr;
InstanceSort<DecalInstance> *decal_sort;
uint32_t max_decals;
RID decal_buffer;
uint32_t decal_count;
LightData *omni_lights;
LightData *spot_lights;
LightData *omni_lights = nullptr;
LightData *spot_lights = nullptr;
InstanceSort<LightInstance> *omni_light_sort;
InstanceSort<LightInstance> *spot_light_sort;
@@ -735,7 +735,7 @@ private:
uint32_t omni_light_count = 0;
uint32_t spot_light_count = 0;
DirectionalLightData *directional_lights;
DirectionalLightData *directional_lights = nullptr;
uint32_t max_directional_lights;
RID directional_light_buffer;
@@ -938,7 +938,7 @@ private:
};
struct FogMaterialData : public RendererRD::MaterialData {
FogShaderData *shader_data;
FogShaderData *shader_data = nullptr;
RID uniform_set;
bool uniform_set_updated;

View File

@@ -63,7 +63,7 @@ public:
};
private:
RendererStorageRD *storage;
RendererStorageRD *storage = nullptr;
RD::DataFormat texture_format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
RID index_buffer;
@@ -162,8 +162,8 @@ public:
UBO ubo;
SkyDirectionalLightData *directional_lights;
SkyDirectionalLightData *last_frame_directional_lights;
SkyDirectionalLightData *directional_lights = nullptr;
SkyDirectionalLightData *last_frame_directional_lights = nullptr;
uint32_t max_directional_lights;
uint32_t last_frame_directional_light_count;
RID directional_light_buffer;
@@ -228,7 +228,7 @@ public:
} sky_shader;
struct SkyMaterialData : public RendererRD::MaterialData {
SkyShaderData *shader_data;
SkyShaderData *shader_data = nullptr;
RID uniform_set;
bool uniform_set_updated;
@@ -262,7 +262,7 @@ public:
Sky *dirty_list = nullptr;
//State to track when radiance cubemap needs updating
SkyMaterialData *prev_material;
SkyMaterialData *prev_material = nullptr;
Vector3 prev_position;
float prev_time;

View File

@@ -73,7 +73,7 @@ typedef ShaderData *(*ShaderDataRequestFunction)();
struct Material;
struct Shader {
ShaderData *data;
ShaderData *data = nullptr;
String code;
ShaderType type;
Map<StringName, Map<int, RID>> default_texture_parameter;
@@ -177,9 +177,9 @@ struct GlobalVariables {
List<RID> materials_using_texture;
RID buffer;
Value *buffer_values;
ValueUsage *buffer_usage;
bool *buffer_dirty_regions;
Value *buffer_values = nullptr;
ValueUsage *buffer_usage = nullptr;
bool *buffer_dirty_regions = nullptr;
uint32_t buffer_dirty_region_count = 0;
uint32_t buffer_size;

View File

@@ -149,7 +149,7 @@ struct Mesh {
/* Mesh Instance */
struct MeshInstance {
Mesh *mesh;
Mesh *mesh = nullptr;
RID skeleton;
struct Surface {
RID vertex_buffer;