summaryrefslogtreecommitdiffstats
path: root/melib
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2020-11-09 00:40:32 +0200
committerManos Pitsidianakis <el13635@mail.ntua.gr>2020-11-09 00:40:32 +0200
commita34f0aac5ba1ece6d55acc28b7924e3025e60e02 (patch)
treee7ce3e3e43442b679bcd46a3d9afe6545218db68 /melib
parent353ac2d029592d647c4d218d13e06c031e12b8fc (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.rs8
-rw-r--r--melib/src/backends/maildir/stream.rs6
-rw-r--r--melib/src/collection.rs6
-rw-r--r--melib/src/sqlite3.rs7
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))
}
}