| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2025-06-28 | Move some String constructors out of the header | Maxime Coste | |
| Those do not really need to get inlined and pull std::max which really wants <algorithm> which is an expensive header. | |||
| 2025-05-23 | Fix out-of-bounds write in short strings when reaching capacity | Maxime Coste | |
| When we reach capacity for Short strings, we re-use the field past the buffer (remaining_capacity) to hold the terminal null character, this works well but the code was trying to set it twice: when computing the remaining capacity (which is 0 when we hit capacity), and when setting the null character. While this second operation should be fine in practice, it is technically undefined behaviour as we overwrite it by accessing past the end of the buffer. | |||
| 2024-06-23 | Fix trailing whitespaces | Maxime Coste | |
| 2024-06-11 | Switch to bitfield. | Ben Judd | |
| 2024-06-07 | Fix build by moving include. | Ben Judd | |
| 2024-06-07 | Increase SSO from 22 to 23 chars. | Ben Judd | |
| 2021-07-20 | Improve code-generation for Strings | Maxime Coste | |
| Make String::Data use trivial copy of the short/long union to avoid unnecessary branching there, inline release() as it can be elided by the compiler on moved-from Strings. | |||
| 2021-07-09 | Inline String::Data no-copy constructor | Maxime Coste | |
| 2019-11-17 | Fix String::resize not zero-terminating | Maxime Coste | |
| 2019-03-19 | Make String able to reference external data without copying | Maxime Coste | |
| Sometimes we really need to have a String instead of a StringView, but some of those strings might not need to own their data. Make it possible to explicitely construct a String that does not own the underlying buffer. Use it when parsing balanced strings. | |||
| 2017-10-10 | Move all non-core string code to string_utils.{hh,cc} | Maxime Coste | |
| 2017-08-29 | Rename containers.hh to ranges.hh (and Container to Range) | Maxime Coste | |
| 2017-08-23 | Fix String::Data copying/moving from self | Maxime Coste | |
| 2017-06-26 | Use the extra_word_chars option in word based normal commands | Maxime Coste | |
| the completion_extra_word_chars is now gone, superseeded by extra_word_chars that gets used both for completion and for normal mode. Fixes #1304 | |||
| 2017-06-26 | Fix various undefined behaviours detected by UBSan | Maxime Coste | |
| 2017-06-24 | Slight code refactoring and perf improvement in vector option to string | Maxime Coste | |
| 2017-06-16 | Trim whitespaces surrounding docstrings | Maxime Coste | |
| Closes #1439 | |||
| 2016-11-23 | Fix horrible leak in String::Data::operator=(String::Data&&) | Maxime Coste | |
| And that, my friends, is why we recommend using standard containers instead of rolling your own. | |||
| 2016-11-23 | Small code tweak | Maxime Coste | |
| 2016-11-22 | Small code refactoring | Maxime Coste | |
| 2016-10-31 | Add to_string(long long int) overload to fix OSX compilation | Maxime Coste | |
| 2016-10-01 | Rename get_width to codepoint_width | Maxime Coste | |
| 2016-10-01 | Support codepoints of variable width | Maxime Coste | |
| Add a ColumnCount type and use it in place of CharCount whenever more appropriate, take column size of codepoints into account for vertical movements and docstring wrapping. Fixes #811 | |||
| 2016-09-28 | Fix String::Data::reserve on big endian platforms, and document String::Data | Maxime Coste | |
| reserve was not ensuring the capacity would be pair, which is needed on big endian machines, as we use its least significant bit to flag short string optimizations. On little endian the bit we use is the 8th most significant (the least significant bit of the last byte), so we were not hitting any problems. Fixes #828 | |||
| 2016-08-31 | Remove the to_string(unsigned) (it conflicts with to_string(size_t) on x86) | Maxime Coste | |
| Just cast to int when we pass an unsigned. | |||
| 2016-08-27 | Add a to_string overload for unsigned int | Maxime Coste | |
| 2016-08-26 | Fix another bug in wrap_lines | Maxime Coste | |
| 2016-06-19 | Add a String::resize method | Maxime Coste | |
| 2016-04-27 | Fix wrap_lines | Maxime Coste | |
| 2016-04-04 | Refactor wrap_lines and add some unit tests | Maxime Coste | |
| 2016-03-24 | Optimize split implementation, avoid growing strings char by char | Maxime Coste | |
| 2016-02-13 | Do not allow / in highlighter names as it is used for hierachies | Maxime Coste | |
| / are replaced with <slash> in the highlighter names. Fixes #553 | |||
| 2016-02-10 | Use a custom SSO aware string backend | Maxime Coste | |
| 2015-11-25 | Add a static const String::ms_empty empty string | Maxime Coste | |
| 2015-11-19 | Splitting an empty string now returns an empty vector | Maxime Coste | |
| 2015-09-24 | Add Haiku support. | Filip SzczepaĆski | |
| 2015-09-23 | Refactor utf8::iterator to be on the safe side | Maxime Coste | |
| utf8::iterator now knows the iterator valid range, and pass it to utf8 functions. | |||
| 2015-09-20 | Tweak string unit tests | Maxime Coste | |
| 2015-09-20 | Fix unescape implementation | Maxime Coste | |
| 2015-09-07 | Avoid wrapping lines with negative max width | Maxime Coste | |
| 2015-08-18 | Smaller sizeof for in place strings | Maxime Coste | |
| 2015-08-13 | More performant escape/unescape | Maxime Coste | |
| 2015-07-14 | Add missing support for Codepoint in format | Maxime Coste | |
| 2015-06-22 | Add support for hex formatting | Maxime Coste | |
| 2015-06-19 | Fix wrong exception type in str_to_int | Maxime Coste | |
| 2015-05-22 | Move unit test functions in next to the code they are testing | Maxime Coste | |
| 2015-05-01 | Add str_to_int_ifp that returns an Optional<int> instead of throwing | Maxime Coste | |
| 2015-04-22 | Add format_to allowing formating to an existing buffer | Maxime Coste | |
| 2015-03-31 | small code tweak in format | Maxime Coste | |
| 2015-03-31 | number to string conversion avoids memory allocations | Maxime Coste | |
