Fix valgrind warnings (#806)

* SDL_Event::timestamp must be initialized to zero or current time. Zero the complete struct to be safe.

* Avoid ::strcpy of uninitialized WorldContainer::m_key

* Initialize members to avoid uninitialized member accesses
This commit is contained in:
Anonymous Maarten 2026-05-15 22:20:35 +02:00 committed by GitHub
parent fdbe9a8705
commit 68a6460407
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 27 additions and 19 deletions

View File

@ -72,6 +72,7 @@ class LegoOmni : public MxOmni {
WorldContainer()
{
m_id = e_undefined;
m_key[0] = '\0';
m_atomId = NULL;
}
@ -200,7 +201,7 @@ class LegoOmni : public MxOmni {
quit.type = SDL_EVENT_QUIT;
quit.timestamp = SDL_GetTicksNS();
SDL_Event event;
SDL_Event event = {};
event.quit = quit;
SDL_PushEvent(&event);

View File

@ -130,6 +130,7 @@ LegoCarBuild::LegoCarBuild()
m_destLocation = LegoGameState::e_undefined;
m_playingActorScript = DS_NOT_A_STREAM;
m_alreadyFinished = 0;
m_lastActorScript = 0;
NotificationManager()->Register(this);
}

View File

@ -331,6 +331,8 @@ LegoAnimationManager::LegoAnimationManager()
m_animState = NULL;
m_unk0x424 = NULL;
::memset(m_extras, 0, sizeof(m_extras));
Init();
NotificationManager()->Register(this);

View File

@ -592,7 +592,7 @@ void EnableAnimations(MxBool p_enable)
// FUNCTION: LEGO1 0x1003ef40
void SetAppCursor(Cursor p_cursor)
{
SDL_Event event;
SDL_Event event = {};
event.user.type = g_legoSdlEvents.m_windowsMessage;
event.user.code = WM_ISLE_SETCURSOR;
event.user.data1 = (void*) p_cursor;

View File

@ -439,10 +439,11 @@ void LegoWorldPresenter::ParseExtra()
extraCopy[extraLength] = '\0';
char output[1024];
output[0] = '\0';
if (KeyValueStringParse(output, g_strWORLD, extraCopy)) {
char* worldKey = strtok(output, g_parseExtraTokens);
LoadWorld(worldKey, (LegoWorld*) m_entity);
((LegoWorld*) m_entity)->SetWorldId(Lego()->GetWorldId(worldKey));
LoadWorld(worldKey, static_cast<LegoWorld*>(m_entity));
static_cast<LegoWorld*>(m_entity)->SetWorldId(Lego()->GetWorldId(worldKey));
}
}
}

View File

@ -80,9 +80,9 @@ MxResult Hospital::Create(MxDSAction& p_dsAction)
SetIsWorldActive(FALSE);
m_hospitalState = (HospitalState*) GameState()->GetState("HospitalState");
m_hospitalState = static_cast<HospitalState*>(GameState()->GetState("HospitalState"));
if (!m_hospitalState) {
m_hospitalState = (HospitalState*) GameState()->CreateState("HospitalState");
m_hospitalState = static_cast<HospitalState*>(GameState()->CreateState("HospitalState"));
m_hospitalState->m_state = HospitalState::e_newState;
}
else if (m_hospitalState->m_state == HospitalState::e_unknown4) {
@ -676,6 +676,7 @@ MxBool Hospital::Escape()
// FUNCTION: LEGO1 0x10076370
HospitalState::HospitalState()
{
m_state = e_newState;
m_stateActor = 0;
m_statePepper = 0;
m_stateMama = 0;

View File

@ -66,7 +66,7 @@ class MxPresenter : public MxCore {
m_previousTickleStates |= 1 << (MxU8) m_currentTickleState;
m_currentTickleState = p_tickleState;
SDL_Event event;
SDL_Event event = {};
event.user.type = g_legoSdlEvents.m_presenterProgress;
event.user.code = m_currentTickleState;
event.user.data1 = (void*) m_action;

View File

@ -15,6 +15,8 @@ DECOMP_SIZE_ASSERT(MxDiskStreamController, 0xc8);
// FUNCTION: LEGO1 0x100c7120
MxDiskStreamController::MxDiskStreamController()
{
m_unk0xc4 = FALSE;
m_unk0x70 = FALSE;
m_unk0x8c = 0;
}

View File

@ -234,10 +234,10 @@ HRESULT FrameBufferImpl::SetPalette(LPDIRECTDRAWPALETTE lpDDPalette)
}
m_palette = lpDDPalette;
SDL_SetSurfacePalette(m_transferBuffer->m_surface, ((DirectDrawPaletteImpl*) m_palette)->m_palette);
SDL_SetSurfacePalette(m_transferBuffer->m_surface, static_cast<DirectDrawPaletteImpl*>(m_palette)->m_palette);
if (DDRenderer) {
DDRenderer->SetPalette(((DirectDrawPaletteImpl*) m_palette)->m_palette);
DDRenderer->SetPalette(static_cast<DirectDrawPaletteImpl*>(m_palette)->m_palette);
}
return DD_OK;

View File

@ -84,10 +84,10 @@ class OpenGLES2Renderer : public Direct3DRMRenderer {
SDL_GLContext m_context;
float m_anisotropic;
GLuint m_fbo;
GLuint m_colorTarget;
GLuint m_depthTarget;
GLuint m_shaderProgram;
GLuint m_dummyTexture;
GLuint m_colorTarget = 0;
GLuint m_depthTarget = 0;
GLuint m_shaderProgram = 0;
GLuint m_dummyTexture = 0;
GLint m_posLoc;
GLint m_normLoc;
GLint m_texLoc;

View File

@ -93,13 +93,13 @@ class OpenGLES3Renderer : public Direct3DRMRenderer {
SDL_GLContext m_context;
uint32_t m_msaa;
float m_anisotropic;
GLuint m_fbo;
GLuint m_resolveFBO;
GLuint m_colorTarget;
GLuint m_fbo = 0;
GLuint m_resolveFBO = 0;
GLuint m_colorTarget = 0;
GLuint m_resolveColor = 0;
GLuint m_depthTarget;
GLuint m_shaderProgram;
GLuint m_dummyTexture;
GLuint m_depthTarget = 0;
GLuint m_shaderProgram = 0;
GLuint m_dummyTexture = 0;
GLint m_posLoc;
GLint m_normLoc;
GLint m_texLoc;