fix: clean up sanitizer startup issues

This commit is contained in:
MatthewBeshay 2026-03-23 19:34:58 +11:00
parent fed9cf2d95
commit cc24fc996a
6 changed files with 42 additions and 25 deletions

View file

@ -3,15 +3,16 @@
class IUIScene_CommandBlockMenu {
public:
virtual ~IUIScene_CommandBlockMenu() = default;
void Initialise(CommandBlockEntity* commandBlock);
protected:
void ConfirmButtonClicked();
virtual std::wstring GetCommand();
virtual void SetCommand(std::wstring command);
virtual int GetPad();
virtual std::wstring GetCommand() = 0;
virtual void SetCommand(std::wstring command) = 0;
virtual int GetPad() = 0;
private:
CommandBlockEntity* m_commandBlock;
};
};

View file

@ -12,7 +12,7 @@
Random* UIScene_MainMenu::random = new Random();
EUIScene UIScene_MainMenu::eNavigateWhenReady = (EUIScene)-1;
int UIScene_MainMenu::eNavigateWhenReady = -1;
UIScene_MainMenu::UIScene_MainMenu(int iPad, void* initData,
UILayer* parentLayer)
@ -1966,8 +1966,8 @@ void UIScene_MainMenu::tick() {
#endif
{
app.DebugPrintf("[MainMenu] Navigating away from MainMenu.\n");
ui.NavigateToScene(lockedProfile, eNavigateWhenReady);
eNavigateWhenReady = (EUIScene)-1;
ui.NavigateToScene(lockedProfile, (EUIScene)eNavigateWhenReady);
eNavigateWhenReady = -1;
}
#ifdef _DURANGO
else {

View file

@ -90,10 +90,10 @@ private:
private:
// 4J-JEV: Delay navigation until font changes.
static EUIScene eNavigateWhenReady;
static int eNavigateWhenReady;
static void proceedToScene(int iPad, EUIScene eScene) {
eNavigateWhenReady = eScene;
eNavigateWhenReady = (int)eScene;
}
public:

View file

@ -1504,30 +1504,34 @@ static int set_render_state(GDrawRenderState *r, S32 vformat, const int **ovvars
static void set_vertex_format(S32 format, F32 *vertices)
{
const void *vertex_offset_0 = (const void *) (size_t) vertices;
const void *vertex_offset_8 = (const void *) ((size_t) vertices + (2 * sizeof(F32)));
const void *vertex_offset_16 = (const void *) ((size_t) vertices + (4 * sizeof(F32)));
switch (format) {
case GDRAW_vformat_v2:
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertex_offset_0);
glEnableVertexAttribArray(0);
break;
case GDRAW_vformat_v2aa:
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 16, vertices);
glVertexAttribPointer(1, 4, GL_SHORT, GL_FALSE, 16, vertices+2);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 16, vertex_offset_0);
glVertexAttribPointer(1, 4, GL_SHORT, GL_FALSE, 16, vertex_offset_8);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
break;
case GDRAW_vformat_v2tc2:
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 16, vertices);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 16, vertices+2);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 16, vertex_offset_0);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 16, vertex_offset_8);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
break;
case GDRAW_vformat_ihud1:
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 20, vertices);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 20, vertices+2);
glVertexAttribPointer(2, 4, GL_UNSIGNED_BYTE, GL_TRUE, 20, vertices+4);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 20, vertex_offset_0);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 20, vertex_offset_8);
glVertexAttribPointer(2, 4, GL_UNSIGNED_BYTE, GL_TRUE, 20, vertex_offset_16);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2);
@ -1943,10 +1947,13 @@ static void make_fragment_program(ProgramWithCachedVariableLocations *p, int num
p->program = 0;
} else {
S32 vert = GDRAW_vformat_v2tc2;
if (p >= &gdraw->fprog[0][0][0] && p < &gdraw->fprog[GDRAW_TEXTURE__count][0][0]) {
ProgramWithCachedVariableLocations *basic_fprog_begin = &gdraw->fprog[0][0][0];
ProgramWithCachedVariableLocations *basic_fprog_end =
basic_fprog_begin + (sizeof(gdraw->fprog) / sizeof(gdraw->fprog[0][0][0]));
if (p >= basic_fprog_begin && p < basic_fprog_end) {
// for basic rendering shaders, we have three versions corresponding to the
// three vertex formats we support.
S32 n = (S32) (p - gdraw->fprog[0][0]);
S32 n = (S32) (p - basic_fprog_begin);
vert = n % 3;
}
@ -2032,8 +2039,12 @@ static void make_vertex_programs(void)
static void lazy_shader(ProgramWithCachedVariableLocations *ptr)
{
if (ptr >= &gdraw->fprog[0][0][0] && ptr < &gdraw->fprog[GDRAW_TEXTURE__count][0][0]) {
S32 n = (S32) (ptr - gdraw->fprog[0][0]);
ProgramWithCachedVariableLocations *basic_fprog_begin = &gdraw->fprog[0][0][0];
ProgramWithCachedVariableLocations *basic_fprog_end =
basic_fprog_begin + (sizeof(gdraw->fprog) / sizeof(gdraw->fprog[0][0][0]));
if (ptr >= basic_fprog_begin && ptr < basic_fprog_end) {
S32 n = (S32) (ptr - basic_fprog_begin);
n /= 3;
make_fragment_program(ptr, NUMFRAGMENTS_pshader_basic, pshader_basic_arr[n], pshader_basic_vars);

View file

@ -27,7 +27,11 @@ bool TickNextTickData::equals(const TickNextTickData* o) const {
}
int TickNextTickData::hashCode() const {
return (((x * 1024 * 1024) + (z * 1024) + y) * 256);
std::uint32_t hash =
(((std::uint32_t)x * 1024u * 1024u) + ((std::uint32_t)z * 1024u) +
(std::uint32_t)y) *
256u;
return (std::int32_t)hash;
}
TickNextTickData* TickNextTickData::delay(int64_t l) {
@ -72,4 +76,4 @@ int TickNextTickData::hash_fnct(const TickNextTickData& k) {
bool TickNextTickData::eq_test(const TickNextTickData& x,
const TickNextTickData& y) {
return x.equals(&y);
}
}

View file

@ -2,5 +2,6 @@
class DescFormatter {
public:
virtual std::wstring format(const std::wstring& i18nValue);
};
virtual ~DescFormatter() = default;
virtual std::wstring format(const std::wstring& i18nValue) = 0;
};