:: commit fc9426ea9a2f9c5a51431439f46d948bf9ee97d7

Kamila Szewczyk <kspalaiologos@gmail.com> — 2022-05-13 09:01

parents: e44014a74f

move the `init` call to decoding

diff --git a/include/cm.h b/include/cm.h
index e97c1e0..1b3a806 100644
--- a/include/cm.h
+++ b/include/cm.h
@@ -16,7 +16,6 @@ typedef struct {
     u16 C0[256], C1[256][256], C2[512][17];
 } state;
 
-void init(state * s);
 void begin(state * s);
 void encode_bytes(state * s, u8 * c, s32 size);
 void decode_bytes(state * s, u8 * c, s32 size);
diff --git a/src/cm.c b/src/cm.c
index ef9f395..77b3974 100644
--- a/src/cm.c
+++ b/src/cm.c
@@ -30,13 +30,6 @@
 #define write_out(s, c) (s)->out_queue[(s)->output_ptr++] = (c)
 #define read_in(s) ((s)->input_ptr < (s)->input_max ? (s)->in_queue[(s)->input_ptr++] : -1)
 
-void init(state * s) {
-    s->code = (s->code << 8) + read_in(s);
-    s->code = (s->code << 8) + read_in(s);
-    s->code = (s->code << 8) + read_in(s);
-    s->code = (s->code << 8) + read_in(s);
-}
-
 #define update0(p, x) ((p) - ((p) >> x))
 #define update1(p, x) ((p) + (((p) ^ 65535) >> x))
 
@@ -128,6 +121,11 @@ void encode_bytes(state * s, u8 * buf, s32 size) {
 }
 
 void decode_bytes(state * s, u8 * c, s32 size) {
+    s->code = (s->code << 8) + read_in(s);
+    s->code = (s->code << 8) + read_in(s);
+    s->code = (s->code << 8) + read_in(s);
+    s->code = (s->code << 8) + read_in(s);
+    
     for(s32 i = 0; i < size; i++) {
         if (s->c1 == s->c2)
             ++s->run;
diff --git a/src/libbz3.c b/src/libbz3.c
index 79f5fe9..bff538d 100644
--- a/src/libbz3.c
+++ b/src/libbz3.c
@@ -238,7 +238,6 @@ PUBLIC_API s32 bz3_decode_block(struct bz3_state * state, u8 * buffer, s32 data_
     state->cm_state->in_queue = b1 + p * 4 + 1;
     state->cm_state->input_ptr = 0;
     state->cm_state->input_max = data_size;
-    init(state->cm_state);
 
     s32 size_src;
 
tab: 248 wrap: offon