From 8a21f2e181110a2ba9c6904a4875bc9456c74c91 Mon Sep 17 00:00:00 2001 From: Vincent Ollivier Date: Wed, 5 Jun 2024 18:10:14 +0200 Subject: [PATCH] Fix final line ending (#635) * Fix panic on empty files * Add the final newline implicitely --- src/usr/edit.rs | 13 +++++-------- src/usr/view.rs | 3 +++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/usr/edit.rs b/src/usr/edit.rs index ef568789..81fb6e92 100644 --- a/src/usr/edit.rs +++ b/src/usr/edit.rs @@ -56,6 +56,9 @@ impl Editor { for line in contents.lines() { lines.push(line.into()); } + if lines.is_empty() { + lines.push(String::new()); + } } Err(_) => { lines.push(String::new()); @@ -76,16 +79,10 @@ impl Editor { } pub fn save(&mut self) -> Result<(), ExitCode> { - let mut contents = String::new(); - let n = self.lines.len(); - for i in 0..n { - contents.push_str(&self.lines[i]); - if i < n - 1 { - contents.push('\n'); - } - } + let contents = self.lines.join("\n") + "\n"; if fs::write(&self.pathname, contents.as_bytes()).is_ok() { + let n = self.lines.len(); let status = format!("Wrote {}L to '{}'", n, self.pathname); self.print_status(&status, "yellow"); Ok(()) diff --git a/src/usr/view.rs b/src/usr/view.rs index 3f18182f..2c1f3879 100644 --- a/src/usr/view.rs +++ b/src/usr/view.rs @@ -42,6 +42,9 @@ impl Viewer { lines.push(line.into()); width = cmp::max(width, line.chars().count()); } + if lines.is_empty() { + lines.push(String::new()); + } } Err(_) => { lines.push(String::new());