From 6fdc502003b27fb3934215ea44c640a6dbb0be5e Mon Sep 17 00:00:00 2001 From: Damien Levac Date: Sat, 13 Dec 2025 18:09:53 -0500 Subject: [PATCH 1/2] fix: set_build_settings adjustment to avoid overflowing configuration blocks (fix #14462) --- crates/tauri-cli/src/helpers/pbxproj.rs | 63 +++++++++++++++++-------- 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/crates/tauri-cli/src/helpers/pbxproj.rs b/crates/tauri-cli/src/helpers/pbxproj.rs index 28c36c7d9..c7c2acc8f 100644 --- a/crates/tauri-cli/src/helpers/pbxproj.rs +++ b/crates/tauri-cli/src/helpers/pbxproj.rs @@ -233,29 +233,54 @@ impl Pbxproj { .iter_mut() .find(|s| s.key == key) { - if build_setting.value != value { - let Some(line) = self.raw_lines.get_mut(build_setting.line_number) else { - return; - }; + if build_setting.value == value { + return; + } - *line = format!("{}{key} = {value};", build_setting.identation); + let new_line_content = format!("{}{key} = {value};", build_setting.identation); + + if let Some(line) = self.additions.get_mut(&build_setting.line_number) { + line.push_str(&format!("\n{}", new_line_content)); + } else if let Some(line) = self.raw_lines.get_mut(build_setting.line_number) { + *line = new_line_content; self.has_changes = true; } - } else { - let Some(last_build_setting) = build_configuration.build_settings.last().cloned() else { - return; - }; - build_configuration.build_settings.push(BuildSettings { - identation: last_build_setting.identation.clone(), - line_number: last_build_setting.line_number + 1, - key: key.to_string(), - value: value.to_string(), - }); - self.additions.insert( - last_build_setting.line_number + 1, - format!("{}{key} = {value};", last_build_setting.identation), - ); + + build_setting.value = value.to_string(); + + return; } + + let Some(last_build_setting) = build_configuration.build_settings.last() else { + log::error!("cannot add '{key}' to an empty build configuration"); + return; + }; + + let mut new_line_number = last_build_setting.line_number + 1; + if self.additions.contains_key(&last_build_setting.line_number) { + new_line_number = last_build_setting.line_number; + } + + let identation = last_build_setting.identation.clone(); + let new_entry = format!("{}{key} = {value};", identation); + + build_configuration.build_settings.push(BuildSettings { + identation: identation.clone(), + line_number: new_line_number, + key: key.to_string(), + value: value.to_string(), + }); + + self + .additions + .entry(new_line_number) + .and_modify(|current| { + current.push('\n'); + current.push_str(&new_entry); + }) + .or_insert(new_entry); + + self.has_changes = true; } } From 19eebe984af3affb4d534d835985d9d6545497a8 Mon Sep 17 00:00:00 2001 From: Damien Levac Date: Sat, 13 Dec 2025 18:22:00 -0500 Subject: [PATCH 2/2] change file --- .changes/change-pr-14652.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changes/change-pr-14652.md diff --git a/.changes/change-pr-14652.md b/.changes/change-pr-14652.md new file mode 100644 index 000000000..6513818ea --- /dev/null +++ b/.changes/change-pr-14652.md @@ -0,0 +1,6 @@ +--- +"tauri-cli": patch:bug +--- + +Adjust `Pbxproj::set_build_settings` to ensure we are not writing lines outside +configuration blocks.