Skip to content

Commit 54cff9f

Browse files
committed
Patch: Better WebStorage hack that actually parses the number of brackets to figure out the closing one
1 parent 515752e commit 54cff9f

1 file changed

Lines changed: 17 additions & 4 deletions

File tree

src/patch.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,11 +1130,24 @@ where
11301130

11311131
if let Some(webstorage_start_match) = webstorage_start_match {
11321132
let webstorage_open_bracket = webstorage_start_match.end();
1133-
let webstorage_end_regex = Regex::new(r"[^\\]['\x22]\s*}").unwrap();
1134-
let webstorage_end_match = webstorage_end_regex.find(&steam_user_localconfig_str[webstorage_open_bracket..]);
11351133

1136-
if let Some(webstorage_end_match) = webstorage_end_match {
1137-
let webstorage_close_bracket = webstorage_open_bracket + webstorage_end_match.end() - 1;
1134+
let mut open_bracket_count: usize = 1;
1135+
let mut webstorage_close_bracket_offset: Option<usize> = None;
1136+
for (offset, char) in (0_usize..).zip(steam_user_localconfig_str[webstorage_open_bracket..].chars()) {
1137+
if char == '{' {
1138+
open_bracket_count += 1;
1139+
} else if char == '}' {
1140+
open_bracket_count -= 1;
1141+
}
1142+
1143+
if open_bracket_count == 0 {
1144+
webstorage_close_bracket_offset = Some(offset);
1145+
break;
1146+
}
1147+
}
1148+
1149+
if let Some(webstorage_close_bracket_offset) = webstorage_close_bracket_offset {
1150+
let webstorage_close_bracket = webstorage_open_bracket + webstorage_close_bracket_offset;
11381151
steam_user_localconfig_str = format!("{}{}", &steam_user_localconfig_str[..webstorage_open_bracket], &steam_user_localconfig_str[webstorage_close_bracket..]);
11391152
}
11401153
}

0 commit comments

Comments
 (0)