summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-14 11:53:17 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-14 12:04:39 +0100
commit9901d916936699e9dd96dcfb3dfb7c2c23a6e098 (patch)
tree411aad3bf8f74e7d75858cf69c9cfa7d82a29b55 /crawl-ref/source/menu.cc
parentaa71df8a07d04cedb6b1de4611aac9a334d52bae (diff)
downloadcrawl-ref-9901d916936699e9dd96dcfb3dfb7c2c23a6e098.tar.gz
crawl-ref-9901d916936699e9dd96dcfb3dfb7c2c23a6e098.zip
Make formatted_scroller handle line-breaks more gracefully.
Now uses formatted_string::parse_multiple, providing an alternate fix to bug [2864019] - assertion failure after pressing ctrl-O.
Diffstat (limited to 'crawl-ref/source/menu.cc')
-rw-r--r--crawl-ref/source/menu.cc15
1 files changed, 4 insertions, 11 deletions
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc
index af1454f22f..4db1788c9f 100644
--- a/crawl-ref/source/menu.cc
+++ b/crawl-ref/source/menu.cc
@@ -1652,17 +1652,10 @@ formatted_scroller::formatted_scroller(int _flags, const std::string& s) :
void formatted_scroller::add_text(const std::string& s)
{
- size_t eolpos = 0;
- while (true)
- {
- const size_t newpos = s.find( "\n", eolpos );
- add_item_formatted_string(formatted_string::parse_string(
- std::string(s, eolpos, newpos-eolpos)));
- if (newpos == std::string::npos)
- break;
- else
- eolpos = newpos + 1;
- }
+ std::vector<formatted_string> parts;
+ formatted_string::parse_string_to_multiple(s, parts);
+ for (unsigned int i = 0; i < parts.size(); ++i)
+ add_item_formatted_string(parts[i]);
}
void formatted_scroller::add_item_formatted_string(const formatted_string& fs,