]> git.nihav.org Git - nihav.git/blobdiff - src/io/intcode.rs
io: fix Elias gamma code reading
[nihav.git] / src / io / intcode.rs
index 141377dc686f09e16993c958c7e705ada9d210c0..e876772df8d320e4ffe539d2278b4d9ea3c13a53 100644 (file)
@@ -71,11 +71,11 @@ fn read_rice(br: &mut BitReader, k: u8) -> BitReaderResult<u32> {
 }
 
 fn read_gamma(br: &mut BitReader) -> BitReaderResult<u32> {
-    let mut ret = 0;
+    let mut ret = 1;
     while br.read(1)? != 1 {
         ret = (ret << 1) | br.read(1)?;
     }
-    Ok(ret)
+    Ok(ret - 1)
 }
 
 fn read_gammap(br: &mut BitReader) -> BitReaderResult<u32> {
@@ -96,6 +96,7 @@ fn uval_to_sval0pm(uval: u32) -> i32 {
 }
 
 impl<'a> IntCodeReader for BitReader<'a> {
+    #[inline(always)]
     fn read_code(&mut self, t: UintCodeType) -> BitReaderResult<u32> {
         match t {
             UintCodeType::UnaryOnes               => read_unary(self, 0),