Skip to content

Commit

Permalink
sqf: fix lint s08 on escaped %% in format strings
Browse files Browse the repository at this point in the history
  • Loading branch information
PabstMirror committed Nov 3, 2024
1 parent 9f5d763 commit 672fa82
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
7 changes: 3 additions & 4 deletions libs/sqf/src/analyze/lints/s08_format_args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ fn get_format_problem(input: &str, extra_args: usize) -> Option<String> {
let mut token_active = false;
let mut token_start = 0;
for (i, c) in format.chars().enumerate() {
let outside_token = !token_active || i > token_start;
if token_active && !c.is_ascii_digit() {
token_active = false;
if i > token_start {
Expand All @@ -128,12 +129,10 @@ fn get_format_problem(input: &str, extra_args: usize) -> Option<String> {
.unwrap_or_default();
tokens.push(token_value);
} else if c != '%' {
return Some(format!(
"format string: non-escaped \"%\" [at index {token_start}]"
));
println!("format string: non-escaped \"%\" [at index {token_start}]");
}
}
if !token_active && c == '%' {
if !token_active && c == '%' && outside_token {
token_active = true;
token_start = i + 1;
}
Expand Down
5 changes: 5 additions & 0 deletions libs/sqf/tests/lints/s08_format_args.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,8 @@ format ["%1", 1, 2, 3]; // unused args
format ["%1%2", 1]; // undefined tokens
format ["%5", 1, 2 ,3 ,4, 5]; // skipped tokens
formatText ["me too %1"];


format ["%1%%", 100];
format ["%%%1%%", 100];
format ["%%%%%%%%%%%%%%%%"];

0 comments on commit 672fa82

Please sign in to comment.