diff --git a/src/f_finale.c b/src/f_finale.c
index a86ce53c7354975e29afde7a5b268d25ad246549..9b85618753b7e3005402892fa1d97030999f887c 100644
--- a/src/f_finale.c
+++ b/src/f_finale.c
@@ -1313,7 +1313,7 @@ void F_CreditDrawer(void)
 				break;
 			case 1:
 			{
-				INT32 height = V_CreditStringHeight(&credits[i][1], 0) * vid.dup;
+				INT32 height = V_CreditStringHeight(&credits[i][1]) * vid.dup;
 				height <<= FRACBITS;
 				if (y > -height)
 					V_DrawCreditString((160 - (V_CreditStringWidth(&credits[i][1]) >> 1)) << FRACBITS, y, 0, &credits[i][1]);
diff --git a/src/v_video.c b/src/v_video.c
index 4ec3f49e499ab2e127dd8fe0043f48237164ca57..5c9724ee9065f954ea5721649c659580a67ee274 100644
--- a/src/v_video.c
+++ b/src/v_video.c
@@ -3232,7 +3232,7 @@ INT32 V_CreditStringHeight(const char *string)
 
 	// It's possible for string to be a null pointer
 	if (!string)
-		return;
+		return 0;
 
 	for (;;)
 	{
@@ -3452,6 +3452,9 @@ INT32 V_StringHeight(const char *string, INT32 option)
 	const char *ch = string;
 	INT32 spacewidth = 4, charwidth = 0;
 
+	if (!string)
+		return 0;
+
 	INT32 lowercase = (option & V_ALLOWLOWERCASE);
 	option &= ~V_FLIP; // which is also shared with V_ALLOWLOWERCASE...