]> git.mikk.net Git - mtbl-rs/commitdiff
block: use little-endian fixed representations
authorChris Mikkelson <cmikk@fsi.io>
Thu, 8 Aug 2024 12:56:25 +0000 (06:56 -0600)
committerChris Mikkelson <cmikk@fsi.io>
Thu, 8 Aug 2024 12:56:25 +0000 (06:56 -0600)
Consistent with C mtbl

src/reader/block.rs
src/writer/block_builder.rs

index 73e2e56b009d043e205ab82c1f806c80f8fdbaba..bf130fb03a76cafb6fbbc120a9b9f0c2f72b837c 100644 (file)
@@ -19,7 +19,7 @@ impl RestartType {
                 } else {
                     let start = idx * size_of::<u32>();
                     let end = start + size_of::<u32>();
-                    Ok(u32::from_be_bytes(restarts[start..end].try_into()?) as usize)
+                    Ok(u32::from_le_bytes(restarts[start..end].try_into()?) as usize)
                 }
             }
             RestartType::U64 => {
@@ -28,7 +28,7 @@ impl RestartType {
                 } else {
                     let start = idx * size_of::<u64>();
                     let end = start + size_of::<u64>();
-                    Ok(u64::from_be_bytes(restarts[start..end].try_into()?) as usize)
+                    Ok(u64::from_le_bytes(restarts[start..end].try_into()?) as usize)
                 }
             }
         }
@@ -50,7 +50,7 @@ impl<D: AsRef<[u8]>> Block<D> {
         }
         let rc_off = data.as_ref().len() - size_of::<u32>();
 
-        let restart_count = u32::from_be_bytes(data.as_ref()[rc_off..].try_into()?) as usize;
+        let restart_count = u32::from_le_bytes(data.as_ref()[rc_off..].try_into()?) as usize;
 
         // try 32-bit restarts
         if (restart_count * size_of::<u32>()) > rc_off {
@@ -285,5 +285,7 @@ mod test {
         let mut bi = b.into_iter();
         bi.seek(&u32::to_be_bytes(40));
         assert_eq!(bi.next().unwrap().key.as_ref(), &u32::to_be_bytes(40));
+        bi.seek(&u32::to_be_bytes(32));
+        assert_eq!(bi.next().unwrap().key.as_ref(), &u32::to_be_bytes(40));
     }
 }
index 5652cf0fb5e236025a92b0960eb1fdef6d530a72..70b9761f8ead8a754f15fd50879c5de3bfa1a9ea 100644 (file)
@@ -88,19 +88,19 @@ impl BlockBuilder {
             .reserve(num_restarts * self.restart_size() + size_of::<u32>());
         match self.restart_size() {
             4 => {
-                for b in self.restarts.iter().map(|r| u32::to_be_bytes(*r as u32)) {
+                for b in self.restarts.iter().map(|r| u32::to_le_bytes(*r as u32)) {
                     self.data.extend_from_slice(&b);
                 }
             }
             8 => {
-                for b in self.restarts.iter().map(|r| u64::to_be_bytes(*r as u64)) {
+                for b in self.restarts.iter().map(|r| u64::to_le_bytes(*r as u64)) {
                     self.data.extend_from_slice(&b);
                 }
             }
             _ => unreachable!(),
         };
         self.data
-            .extend_from_slice(&u32::to_be_bytes(num_restarts as u32));
+            .extend_from_slice(&u32::to_le_bytes(num_restarts as u32));
 
         self.data.as_slice()
     }