Make sure special roomnames have enough text

There's another crash, which is indexing out of bounds if there's
not enough text. This adds simple bounds checks for them.
This commit is contained in:
NyakoFox
2026-02-15 21:06:15 -04:00
committed by Ethan Lee
parent 11b660abb0
commit deeed00c95

View File

@@ -222,11 +222,11 @@ void mapclass::updateroomnames(void)
if (rx == roomname->x && ry == roomname->y && (roomname->flag == -1 || (INBOUNDS_ARR(roomname->flag, obj.flags) && obj.flags[roomname->flag]))) if (rx == roomname->x && ry == roomname->y && (roomname->flag == -1 || (INBOUNDS_ARR(roomname->flag, obj.flags) && obj.flags[roomname->flag])))
{ {
roomname_special = true; roomname_special = true;
if (roomname->type == RoomnameType_STATIC) if (roomname->type == RoomnameType_STATIC && roomname->text.size() >= 1)
{ {
setroomname(roomname->text[0].c_str()); setroomname(roomname->text[0].c_str());
} }
if (roomname->type == RoomnameType_GLITCH) if (roomname->type == RoomnameType_GLITCH && roomname->text.size() >= 2)
{ {
roomname->delay--; roomname->delay--;
if (roomname->delay <= 0) if (roomname->delay <= 0)
@@ -240,7 +240,7 @@ void mapclass::updateroomnames(void)
} }
setroomname(roomname->text[roomname->progress].c_str()); setroomname(roomname->text[roomname->progress].c_str());
} }
if (roomname->type == RoomnameType_TRANSFORM) if (roomname->type == RoomnameType_TRANSFORM && roomname->text.size() >= 1)
{ {
roomname->delay--; roomname->delay--;
if (roomname->delay <= 0) if (roomname->delay <= 0)