From ab630cb5e269a919a8784cd6317f2f5c280d43a7 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 21 Dec 2010 09:29:01 +0000 Subject: [PATCH] (svn r21555) -Fix [FS#4321]: strings for the query window weren't properly terminated to N characters anymore --- src/misc_gui.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index a1327ba1bf..9e472b1cfa 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -1314,6 +1314,12 @@ struct QueryStringWindow : public QueryStringBaseWindow GetString(this->edit_str_buf, str, &this->edit_str_buf[max_bytes - 1]); str_validate(this->edit_str_buf, &this->edit_str_buf[max_bytes - 1], false, true); + /* Make sure the name isn't too long for the text buffer in the number of + * characters (not bytes). max_chars also counts the '\0' characters. */ + while (Utf8StringLength(this->edit_str_buf) + 1 > max_chars) { + *Utf8PrevChar(this->edit_str_buf + strlen(this->edit_str_buf)) = '\0'; + } + if ((flags & QSF_ACCEPT_UNCHANGED) == 0) this->orig = strdup(this->edit_str_buf); this->caption = caption;