diff --git a/src/p_setup.c b/src/p_setup.c
index 7747f6462b976bc06c4cee699f7e6c84650fc05d..8e09c34df9fa97fda3dea95b99b6abf05440d761 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -2401,6 +2401,10 @@ static boolean P_LoadExtendedSubsectorsAndSegs(UINT8 **data, nodetype_t nodetype
 		seg->angle = R_PointToAngle2(v1->x, v1->y, v2->x, v2->y);
 		if (seg->linedef)
 			segs[i].offset = FixedHypot(v1->x - seg->linedef->v1->x, v1->y - seg->linedef->v1->y);
+		seg->length = P_SegLength(seg);
+#ifdef HWRENDER
+		seg->flength = (rendermode == render_opengl) ? P_SegLengthFloat(seg) : 0;
+#endif
 	}
 
 	return true;