diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 5efdac413..b19b64240 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1967,8 +1967,14 @@ void P_LoadLineDefs (MapData * map) } else { - if (LittleShort(mld->sidenum[0]) != NO_INDEX) - sidecount++; + // patch missing first sides instead of crashing out. + // Visual glitches are better than not being able to play. + if (LittleShort(mld->sidenum[0]) == NO_INDEX) + { + Printf("Line %d has no first side.\n", i); + mld->sidenum[0] = 0; + } + sidecount++; if (LittleShort(mld->sidenum[1]) != NO_INDEX) sidecount++; linemap[i] = i+skipped; @@ -2037,8 +2043,14 @@ void P_LoadLineDefs2 (MapData * map) } else { - if (LittleShort(mld->sidenum[0]) != NO_INDEX) - sidecount++; + // patch missing first sides instead of crashing out. + // Visual glitches are better than not being able to play. + if (LittleShort(mld->sidenum[0]) == NO_INDEX) + { + Printf("Line %d has no first side.\n", i); + mld->sidenum[0] = 0; + } + sidecount++; if (LittleShort(mld->sidenum[1]) != NO_INDEX) sidecount++; linemap[i] = i+skipped; diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 33fb027a7..6cbfccbef 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -850,6 +850,11 @@ struct UDMFParser { ld->Alpha = FRACUNIT * 3/4; } + if (ld->sidedef[0] == NULL) + { + ld->sidedef[0] = (side_t*)(intptr_t)(1); + Printf("Line %d has no first side.\n", index); + } } //===========================================================================