소스 검색

Fix some -Wmaybe-uninitialized warnings

Namely:
```
modules/basis_universal/register_types.cpp: In function 'Ref<Image> basis_universal_unpacker(const Vector<unsigned char>&)':
modules/basis_universal/register_types.cpp:266:15: warning: 'imgfmt' may be used uninitialized in this function [-Wmaybe-uninitialized]
  266 |  image->create(info.m_width, info.m_height, info.m_total_levels > 1, imgfmt, gpudata);
      |  ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
modules/basis_universal/register_types.cpp:255:39: warning: 'format' may be used uninitialized in this function [-Wmaybe-uninitialized]
  255 |    bool ret = tr.transcode_image_level(ptr, size, 0, i, dst + ofs, level.m_total_blocks - i, format);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

```
servers/visual_server.cpp: In member function 'Error VisualServer::_surface_set_data(Array, uint32_t, uint32_t*, uint32_t, Vector<unsigned char>&, int, Vector<unsigned char>&, int, AABB&, Vector<AABB>&)':
servers/visual_server.cpp:636:15: warning: 'iw' may be used uninitialized in this function [-Wmaybe-uninitialized]
  636 |       copymem(&iw[i * 2], &v, 2);
      |               ^
```

```
core/image.cpp: In member function 'Error Image::generate_mipmap_roughness(Image::RoughnessChannel, const Ref<Image>&)':
core/image.cpp:1683:11: warning: 'roughness' may be used uninitialized in this function [-Wmaybe-uninitialized]
 1683 |     float roughness;
      |           ^~~~~~~~~
```
Rémi Verschelde 5 년 전
부모
커밋
f725bd99f4
4개의 변경된 파일5개의 추가작업 그리고 6개의 파일을 삭제
  1. 1 1
      core/image.cpp
  2. 2 1
      modules/basis_universal/register_types.cpp
  3. 1 4
      servers/visual/rasterizer_rd/rasterizer_scene_high_end_rd.cpp
  4. 1 0
      servers/visual_server.cpp

+ 1 - 1
core/image.cpp

@@ -1680,7 +1680,7 @@ Error Image::generate_mipmap_roughness(RoughnessChannel p_roughness_channel, con
 				int pixel_ofs = y * w + x;
 				int pixel_ofs = y * w + x;
 				Color c = _get_color_at_ofs(ptr, pixel_ofs);
 				Color c = _get_color_at_ofs(ptr, pixel_ofs);
 
 
-				float roughness;
+				float roughness = 0;
 
 
 				switch (p_roughness_channel) {
 				switch (p_roughness_channel) {
 					case ROUGHNESS_CHANNEL_R: {
 					case ROUGHNESS_CHANNEL_R: {

+ 2 - 1
modules/basis_universal/register_types.cpp

@@ -174,7 +174,8 @@ static Ref<Image> basis_universal_unpacker(const Vector<uint8_t> &p_buffer) {
 				//format = basist::transcoder_texture_format::cTFETC1; // get this from renderer
 				//format = basist::transcoder_texture_format::cTFETC1; // get this from renderer
 				//imgfmt = Image::FORMAT_RGTC_RG;
 				//imgfmt = Image::FORMAT_RGTC_RG;
 			} else {
 			} else {
-				//decompress
+				// FIXME: There wasn't anything here, but then imgformat is used uninitialized.
+				ERR_FAIL_V(image);
 			}
 			}
 		} break;
 		} break;
 		case BASIS_DECOMPRESS_RGB: {
 		case BASIS_DECOMPRESS_RGB: {

+ 1 - 4
servers/visual/rasterizer_rd/rasterizer_scene_high_end_rd.cpp

@@ -749,7 +749,6 @@ void RasterizerSceneHighEndRD::_render_list(RenderingDevice::DrawListID p_draw_l
 	RD::get_singleton()->draw_list_bind_uniform_set(draw_list, default_vec4_xform_uniform_set, TRANSFORMS_UNIFORM_SET);
 	RD::get_singleton()->draw_list_bind_uniform_set(draw_list, default_vec4_xform_uniform_set, TRANSFORMS_UNIFORM_SET);
 
 
 	MaterialData *prev_material = nullptr;
 	MaterialData *prev_material = nullptr;
-	//	ShaderData *prev_shader = nullptr;
 
 
 	RID prev_vertex_array_rd;
 	RID prev_vertex_array_rd;
 	RID prev_index_array_rd;
 	RID prev_index_array_rd;
@@ -809,12 +808,11 @@ void RasterizerSceneHighEndRD::_render_list(RenderingDevice::DrawListID p_draw_l
 			}
 			}
 		}
 		}
 
 
-		ShaderVersion shader_version = SHADER_VERSION_MAX;
+		ShaderVersion shader_version = SHADER_VERSION_MAX; // Assigned to silence wrong -Wmaybe-initialized.
 
 
 		switch (p_pass_mode) {
 		switch (p_pass_mode) {
 			case PASS_MODE_COLOR:
 			case PASS_MODE_COLOR:
 			case PASS_MODE_COLOR_TRANSPARENT: {
 			case PASS_MODE_COLOR_TRANSPARENT: {
-
 				if (e->uses_lightmap) {
 				if (e->uses_lightmap) {
 					shader_version = SHADER_VERSION_LIGHTMAP_COLOR_PASS;
 					shader_version = SHADER_VERSION_LIGHTMAP_COLOR_PASS;
 				} else if (e->uses_vct) {
 				} else if (e->uses_vct) {
@@ -822,7 +820,6 @@ void RasterizerSceneHighEndRD::_render_list(RenderingDevice::DrawListID p_draw_l
 				} else {
 				} else {
 					shader_version = SHADER_VERSION_COLOR_PASS;
 					shader_version = SHADER_VERSION_COLOR_PASS;
 				}
 				}
-
 			} break;
 			} break;
 			case PASS_MODE_COLOR_SPECULAR: {
 			case PASS_MODE_COLOR_SPECULAR: {
 				if (e->uses_lightmap) {
 				if (e->uses_lightmap) {

+ 1 - 0
servers/visual_server.cpp

@@ -617,6 +617,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
 			} break;
 			} break;
 			case VS::ARRAY_INDEX: {
 			case VS::ARRAY_INDEX: {
 
 
+				ERR_FAIL_NULL_V(iw, ERR_INVALID_DATA);
 				ERR_FAIL_COND_V(p_index_array_len <= 0, ERR_INVALID_DATA);
 				ERR_FAIL_COND_V(p_index_array_len <= 0, ERR_INVALID_DATA);
 				ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::PACKED_INT32_ARRAY, ERR_INVALID_PARAMETER);
 				ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::PACKED_INT32_ARRAY, ERR_INVALID_PARAMETER);