diff --git a/lib/domain/libimagtodo/src/error.rs b/lib/domain/libimagtodo/src/error.rs index c19a6e52..621d3249 100644 --- a/lib/domain/libimagtodo/src/error.rs +++ b/lib/domain/libimagtodo/src/error.rs @@ -22,7 +22,8 @@ generate_error_module!( ConversionError => "Conversion Error", StoreError => "Store Error", StoreIdError => "Store Id handling error", - ImportError => "Error importing" + ImportError => "Error importing", + UTF8Error => "Encountered non-UTF8 characters while reading input" ); ); diff --git a/lib/domain/libimagtodo/src/task.rs b/lib/domain/libimagtodo/src/task.rs index 5e31d952..303ef14b 100644 --- a/lib/domain/libimagtodo/src/task.rs +++ b/lib/domain/libimagtodo/src/task.rs @@ -48,7 +48,7 @@ impl<'a> Task<'a> { pub fn import(store: &'a Store, mut r: R) -> Result<(Task<'a>, String, Uuid)> { let mut line = String::new(); - r.read_line(&mut line); + try!(r.read_line(&mut line).map_err_into(TEK::UTF8Error)); import_task(&line.as_str()) .map_err_into(TEK::ImportError) .and_then(|t| { @@ -70,7 +70,7 @@ impl<'a> Task<'a> { where R: BufRead { let mut line = String::new(); - r.read_line(&mut line); + try!(r.read_line(&mut line).map_err_into(TEK::UTF8Error)); Task::get_from_string(store, line) } @@ -104,7 +104,7 @@ impl<'a> Task<'a> { /// implicitely create the task if it does not exist. pub fn retrieve_from_import(store: &'a Store, mut r: R) -> Result> { let mut line = String::new(); - r.read_line(&mut line); + try!(r.read_line(&mut line).map_err_into(TEK::UTF8Error)); Task::retrieve_from_string(store, line) }