diff options
author | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2020-11-09 00:40:32 +0200 |
---|---|---|
committer | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2020-11-09 00:40:32 +0200 |
commit | a34f0aac5ba1ece6d55acc28b7924e3025e60e02 (patch) | |
tree | e7ce3e3e43442b679bcd46a3d9afe6545218db68 /melib | |
parent | 353ac2d029592d647c4d218d13e06c031e12b8fc (diff) |
melib: fix bincode serialization
Previous commit changed bincode deserializes in maildir and sqlite3.rs
from bincode::deserialize_from to using bincode::config::DefaultOptions
and bincode::Options trait's method deserialize_from.
However, these two different deserializes use a different default
settings: https://github.com/servo/bincode/issues/348
Specifically, varint encoding for integers is the default for
DefaultOptions but not when using bincode::{de,}serialize_* functions.
That means that serialized structs were not able to be deserialized.
This commit makes all {de,}serializations use the DefaultOptions
interface rather than the top level functions.
Diffstat (limited to 'melib')
-rw-r--r-- | melib/src/backends/maildir/backend.rs | 8 | ||||
-rw-r--r-- | melib/src/backends/maildir/stream.rs | 6 | ||||
-rw-r--r-- | melib/src/collection.rs | 6 | ||||
-rw-r--r-- | melib/src/sqlite3.rs | 7 |
4 files changed, 20 insertions, 7 deletions
diff --git a/melib/src/backends/maildir/backend.rs b/melib/src/backends/maildir/backend.rs index de0ba249..d9aef723 100644 --- a/melib/src/backends/maildir/backend.rs +++ b/melib/src/backends/maildir/backend.rs @@ -289,7 +289,11 @@ impl MailBackend for MaildirType { f.set_permissions(permissions)?; let writer = io::BufWriter::new(f); - bincode::serialize_into(writer, &env)?; + bincode::Options::serialize_into( + bincode::config::DefaultOptions::new(), + writer, + &env, + )?; } (sender)( account_hash, @@ -1366,7 +1370,7 @@ fn add_path_to_index( permissions.set_mode(0o600); // Read/write for owner only. f.set_permissions(permissions)?; let writer = io::BufWriter::new(f); - bincode::serialize_into(writer, &env)?; + bincode::Options::serialize_into(bincode::config::DefaultOptions::new(), writer, &env)?; } Ok(env) } diff --git a/melib/src/backends/maildir/stream.rs b/melib/src/backends/maildir/stream.rs index 24207708..728bd050 100644 --- a/melib/src/backends/maildir/stream.rs +++ b/melib/src/backends/maildir/stream.rs @@ -162,7 +162,11 @@ impl MaildirStream { f.set_permissions(permissions)?; let writer = io::BufWriter::new(f); - bincode::serialize_into(writer, &env)?; + bincode::Options::serialize_into( + bincode::config::DefaultOptions::new(), + writer, + &env, + )?; } if !env.is_seen() { unseen_total += 1; diff --git a/melib/src/collection.rs b/melib/src/collection.rs index 433133cc..a789bc36 100644 --- a/melib/src/collection.rs +++ b/melib/src/collection.rs @@ -88,7 +88,11 @@ impl Drop for Collection { } }; let writer = io::BufWriter::new(f); - bincode::serialize_into(writer, &self.threads).unwrap(); + let _ = bincode::Options::serialize_into( + bincode::config::DefaultOptions::new(), + writer, + &self.thread, + ); } } } diff --git a/melib/src/sqlite3.rs b/melib/src/sqlite3.rs index 8d221a98..4a1a724a 100644 --- a/melib/src/sqlite3.rs +++ b/melib/src/sqlite3.rs @@ -135,9 +135,10 @@ pub fn reset_db(description: &DatabaseDescription, identifier: Option<&str>) -> impl ToSql for Envelope { fn to_sql(&self) -> rusqlite::Result<ToSqlOutput> { - let v: Vec<u8> = bincode::serialize(self).map_err(|e| { - rusqlite::Error::ToSqlConversionFailure(Box::new(MeliError::new(e.to_string()))) - })?; + let v: Vec<u8> = bincode::Options::serialize(bincode::config::DefaultOptions::new(), self) + .map_err(|e| { + rusqlite::Error::ToSqlConversionFailure(Box::new(MeliError::new(e.to_string()))) + })?; Ok(ToSqlOutput::from(v)) } } |