diff -r f46ab13b972a docs/zandronum-history.txt
--- a/docs/zandronum-history.txt	Fri Sep 29 08:23:34 2023 -0400
+++ b/docs/zandronum-history.txt	Sun Jan 28 02:12:31 2024 -0600
@@ -114,6 +114,7 @@
 -	- Fixed: the coop info wasn't getting drawn in clientside demos. [Kaminsky]
 -	- Fixed: Floatbob items having incorrect z-height after a map reset and glitchy GL floor clipping (addresses 2361). [Ru5tK1ng]
 -	- Fixed: Monsters spawned by BossBrain cubes would move before being spawned on the clients therefore triggering warning messages (addresses 2655). [Ru5tK1ng]
+-   - Fixed: Offline crash invoked by using the removebots command during a match in the OpenGl renderer (addresses 1112). [Ru5tK1ng]
 !	- The result value of GAMEEVENT_MEDALS event scripts can now be used to determine whether or not the player receives the medal. [Kaminsky]
 !	- GAMEMODE flags are now validated after all GAMEMODE lumps have been parsed instead of after each one. The internal game mode name (e.g. "TeamLMS") is now printed with the error message instead of the actual name. [Kaminsky]
 !	- Added an extra check to ensure that game modes have a (short) name. [Kaminsky]
diff -r f46ab13b972a src/gl/dynlights/gl_dynlight.cpp
--- a/src/gl/dynlights/gl_dynlight.cpp	Fri Sep 29 08:23:34 2023 -0400
+++ b/src/gl/dynlights/gl_dynlight.cpp	Sun Jan 28 02:12:31 2024 -0600
@@ -1150,11 +1150,15 @@
 			}
 		}
 	}
-
-	for(;count<actor->dynamiclights.Size();count++)
+	// [RK] Guarding against a crash related to bots being removed
+	// immediately from offline matches using 'removebots' command.
+	if ( actor->dynamiclights.Size() != NULL )
 	{
-		actor->dynamiclights[count]->flags2|=MF2_DORMANT;
-		memset(actor->dynamiclights[count]->args, 0, sizeof(actor->args));
+		for (; count < actor->dynamiclights.Size(); count++)
+		{
+			actor->dynamiclights[count]->flags2 |= MF2_DORMANT;
+			memset(actor->dynamiclights[count]->args, 0, sizeof(actor->args));
+		}
 	}
 	All.Unclock();
 }
