diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-11-14 11:53:17 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-14 12:04:39 +0100 |
commit | 9901d916936699e9dd96dcfb3dfb7c2c23a6e098 (patch) | |
tree | 411aad3bf8f74e7d75858cf69c9cfa7d82a29b55 /crawl-ref/source/menu.cc | |
parent | aa71df8a07d04cedb6b1de4611aac9a334d52bae (diff) | |
download | crawl-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.cc | 15 |
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, |