From 97ea14449fa68e9d77107eb05300778911d1b3c8 Mon Sep 17 00:00:00 2001 From: abdo Date: Thu, 22 Oct 2020 16:11:06 +0300 Subject: [PATCH] Ensure non-empty names https://github.com/ankitects/anki/pull/801/ --- rslib/src/notetype/mod.rs | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/rslib/src/notetype/mod.rs b/rslib/src/notetype/mod.rs index 399e2d4a3..ebf13f180 100644 --- a/rslib/src/notetype/mod.rs +++ b/rslib/src/notetype/mod.rs @@ -227,9 +227,12 @@ impl NoteType { if self.name.contains(bad_chars) { self.name = self.name.replace(bad_chars, ""); } + if self.name.is_empty() { + return Err(AnkiError::invalid_input("Empty note type name")); + } self.normalize_names(); - self.fix_field_names(); - self.fix_template_names(); + self.fix_field_names()?; + self.fix_template_names()?; self.ensure_names_unique(); self.reposition_sort_idx(); @@ -323,12 +326,26 @@ impl NoteType { DeckID(self.config.target_deck_id) } - fn fix_field_names(&mut self) { - self.fields.iter_mut().for_each(NoteField::fix_name); + fn fix_field_names(&mut self) -> Result<()> { + for mut f in &mut self.fields { + NoteField::fix_name(&mut f); + if f.name.is_empty() { + return Err(AnkiError::invalid_input("Empty field name")); + } + } + + Ok(()) } - fn fix_template_names(&mut self) { - self.templates.iter_mut().for_each(CardTemplate::fix_name); + fn fix_template_names(&mut self) -> Result<()> { + for mut t in &mut self.templates { + CardTemplate::fix_name(&mut t); + if t.name.is_empty() { + return Err(AnkiError::invalid_input("Empty template name")); + } + } + + Ok(()) } /// Find the field index of the provided field name.