settings: Fix out of bounds index (#41227)

Lukas Wirth created

Fixes ZED-2J8

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Change summary

crates/settings/src/settings_json.rs | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)

Detailed changes

crates/settings/src/settings_json.rs 🔗

@@ -727,15 +727,11 @@ pub fn to_pretty_json(
     indent_size: usize,
     indent_prefix_len: usize,
 ) -> String {
-    const SPACES: [u8; 32] = [b' '; 32];
-
-    debug_assert!(indent_size <= SPACES.len());
-    debug_assert!(indent_prefix_len <= SPACES.len());
-
     let mut output = Vec::new();
+    let indent = " ".repeat(indent_size);
     let mut ser = serde_json::Serializer::with_formatter(
         &mut output,
-        serde_json::ser::PrettyFormatter::with_indent(&SPACES[0..indent_size.min(SPACES.len())]),
+        serde_json::ser::PrettyFormatter::with_indent(indent.as_bytes()),
     );
 
     value.serialize(&mut ser).unwrap();
@@ -744,7 +740,7 @@ pub fn to_pretty_json(
     let mut adjusted_text = String::new();
     for (i, line) in text.split('\n').enumerate() {
         if i > 0 {
-            adjusted_text.push_str(str::from_utf8(&SPACES[0..indent_prefix_len]).unwrap());
+            adjusted_text.extend(std::iter::repeat(' ').take(indent_prefix_len));
         }
         adjusted_text.push_str(line);
         adjusted_text.push('\n');