From ba0875373d2250e3a6d63d5269ff1a4a89a280ed Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Thu, 13 Apr 2023 12:59:31 +0300 Subject: cmdline.c: fixed rubbing out words (^W) and possible chrashes * This would sometimes rub out more than expected due to reading undefined memory. Actually even crashes were not impossible. * This is because SCI_GETWORDCHARS does not null-terminate the buffer it writes but this was assumed. In effect, we could easily read beyond the allocated memory in wchars if there doesn't happen to be a null-char following the buffer. * Consequently, null-chars in word chars were also not supported, although this would hardly trouble anybody. * Instead, we now store the word chars in a teco_string_t which supports non-null-terminated strings natively. Still we null-terminate the string to keep teco_string_t's promises about degrading to null-terminated char *. This is currently not necessary. * teco_is_wordchar() has been replaced by teco_string_contains(). --- TODO | 4 ---- 1 file changed, 4 deletions(-) (limited to 'TODO') diff --git a/TODO b/TODO index d55ed1e..b1a464a 100644 --- a/TODO +++ b/TODO @@ -14,10 +14,6 @@ Known Bugs: enable it after every keypress. * The "lexer.test..." macros do not work with the unnamed buffer, so there should be a special test in .teco_ini. - * Rubbing out via ^W will rub out more than expected. - This has also been observed after words e.g. rubbing out after "foo " - will sometimes rub out an entire line. - This is not reproducible. * After commands like ECcat /dev/zero$ result in OOM, we do not correctly recover, even though malloc_trim() is called. This could be because of Scintilla's undo token. -- cgit v1.2.3