diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7276593a4..8379b6bea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -22,7 +22,7 @@
Bug #4036: Weird behaviour of AI packages if package target has non-unique ID
Bug #4047: OpenMW not reporting its version number in MacOS; OpenMW-CS not doing it fully
Bug #4125: OpenMW logo cropped on bugtracker
- Bug #4215: OpenMW shows book text after last
tag
+ Bug #4215: OpenMW shows book text after last EOL tag
Bug #4221: Characters get stuck in V-shaped terrain
Bug #4251: Stationary NPCs do not return to their position after combat
Bug #4286: Scripted animations can be interrupted
diff --git a/apps/openmw/mwgui/formatting.cpp b/apps/openmw/mwgui/formatting.cpp
index 16568e2f3..edcb94eed 100644
--- a/apps/openmw/mwgui/formatting.cpp
+++ b/apps/openmw/mwgui/formatting.cpp
@@ -31,13 +31,16 @@ namespace MWGui
boost::algorithm::replace_all(mText, "\r", "");
- // vanilla game does not show any text after last
tag.
+ // vanilla game does not show any text after the last EOL tag.
const std::string lowerText = Misc::StringUtils::lowerCase(mText);
- int index = lowerText.rfind("
");
- if (index == -1)
+ int brIndex = lowerText.rfind("
");
+ int pIndex = lowerText.rfind("
"); + if (brIndex == pIndex) mText = ""; + else if (brIndex > pIndex) + mText = mText.substr(0, brIndex+4); else - mText = mText.substr(0, index+4); + mText = mText.substr(0, pIndex+3); registerTag("br", Event_BrTag); registerTag("p", Event_PTag);