Changeset - r20024:67c8ed4ab50d
[Not reviewed]
master
0 1 0
rubidium - 11 years ago 2013-02-08 20:32:56
rubidium@openttd.org
(svn r24981) -Fix: handle corner case where an encoded string contains too many parameters more gracefully
1 file changed with 7 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/strings.cpp
Show inline comments
 
@@ -1048,8 +1048,13 @@ static char *FormatString(char *buff, co
 
				/* Strings that consume arguments */
 
				StringID str = args->GetInt32(b);
 
				if (game_script && GB(str, TAB_COUNT_OFFSET, TAB_COUNT_BITS) != GAME_TEXT_TAB) break;
 
				StringParameters sub_args(*args, b - SCC_STRING1 + 1);
 
				buff = GetStringWithArgs(buff, str, &sub_args, last, next_substr_case_index, game_script);
 
				uint size = b - SCC_STRING1 + 1;
 
				if (game_script && size > args->num_param - args->offset) {
 
					buff = strecat(buff, "(too many parameters)", last);
 
				} else {
 
					StringParameters sub_args(*args, size);
 
					buff = GetStringWithArgs(buff, str, &sub_args, last, next_substr_case_index, game_script);
 
				}
 
				next_substr_case_index = 0;
 
				break;
 
			}
0 comments (0 inline, 0 general)