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,14 +3,15 @@
class IUIScene_CommandBlockMenu { class IUIScene_CommandBlockMenu {
public: public:
virtual ~IUIScene_CommandBlockMenu() = default;
void Initialise(CommandBlockEntity* commandBlock); void Initialise(CommandBlockEntity* commandBlock);
protected: protected:
void ConfirmButtonClicked(); void ConfirmButtonClicked();
virtual std::wstring GetCommand(); virtual std::wstring GetCommand() = 0;
virtual void SetCommand(std::wstring command); virtual void SetCommand(std::wstring command) = 0;
virtual int GetPad(); virtual int GetPad() = 0;
private: private:
CommandBlockEntity* m_commandBlock; CommandBlockEntity* m_commandBlock;

View file

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

View file

@ -90,10 +90,10 @@ private:
private: private:
// 4J-JEV: Delay navigation until font changes. // 4J-JEV: Delay navigation until font changes.
static EUIScene eNavigateWhenReady; static int eNavigateWhenReady;
static void proceedToScene(int iPad, EUIScene eScene) { static void proceedToScene(int iPad, EUIScene eScene) {
eNavigateWhenReady = eScene; eNavigateWhenReady = (int)eScene;
} }
public: 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) 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) { switch (format) {
case GDRAW_vformat_v2: 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); glEnableVertexAttribArray(0);
break; break;
case GDRAW_vformat_v2aa: case GDRAW_vformat_v2aa:
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 16, vertices); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 16, vertex_offset_0);
glVertexAttribPointer(1, 4, GL_SHORT, GL_FALSE, 16, vertices+2); glVertexAttribPointer(1, 4, GL_SHORT, GL_FALSE, 16, vertex_offset_8);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1); glEnableVertexAttribArray(1);
break; break;
case GDRAW_vformat_v2tc2: case GDRAW_vformat_v2tc2:
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 16, vertices); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 16, vertex_offset_0);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 16, vertices+2); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 16, vertex_offset_8);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1); glEnableVertexAttribArray(1);
break; break;
case GDRAW_vformat_ihud1: case GDRAW_vformat_ihud1:
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 20, vertices); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 20, vertex_offset_0);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 20, vertices+2); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 20, vertex_offset_8);
glVertexAttribPointer(2, 4, GL_UNSIGNED_BYTE, GL_TRUE, 20, vertices+4); glVertexAttribPointer(2, 4, GL_UNSIGNED_BYTE, GL_TRUE, 20, vertex_offset_16);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1); glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2); glEnableVertexAttribArray(2);
@ -1943,10 +1947,13 @@ static void make_fragment_program(ProgramWithCachedVariableLocations *p, int num
p->program = 0; p->program = 0;
} else { } else {
S32 vert = GDRAW_vformat_v2tc2; 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 // for basic rendering shaders, we have three versions corresponding to the
// three vertex formats we support. // three vertex formats we support.
S32 n = (S32) (p - gdraw->fprog[0][0]); S32 n = (S32) (p - basic_fprog_begin);
vert = n % 3; vert = n % 3;
} }
@ -2032,8 +2039,12 @@ static void make_vertex_programs(void)
static void lazy_shader(ProgramWithCachedVariableLocations *ptr) static void lazy_shader(ProgramWithCachedVariableLocations *ptr)
{ {
if (ptr >= &gdraw->fprog[0][0][0] && ptr < &gdraw->fprog[GDRAW_TEXTURE__count][0][0]) { ProgramWithCachedVariableLocations *basic_fprog_begin = &gdraw->fprog[0][0][0];
S32 n = (S32) (ptr - gdraw->fprog[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; n /= 3;
make_fragment_program(ptr, NUMFRAGMENTS_pshader_basic, pshader_basic_arr[n], pshader_basic_vars); 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 { 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) { TickNextTickData* TickNextTickData::delay(int64_t l) {

View file

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