Coverage Report

Created: 2026-03-07 06:53

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/woff2/brotli/c/dec/bit_reader.c
Line
Count
Source
1
/* Copyright 2013 Google Inc. All Rights Reserved.
2
3
   Distributed under MIT license.
4
   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
*/
6
7
/* Bit reading helpers */
8
9
#include "./bit_reader.h"
10
11
#include "../common/platform.h"
12
#include <brotli/types.h>
13
14
#if defined(__cplusplus) || defined(c_plusplus)
15
extern "C" {
16
#endif
17
18
11.3k
void BrotliInitBitReader(BrotliBitReader* const br) {
19
11.3k
  br->val_ = 0;
20
11.3k
  br->bit_pos_ = sizeof(br->val_) << 3;
21
11.3k
}
22
23
94.1k
BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* const br) {
24
94.1k
  size_t aligned_read_mask = (sizeof(br->val_) >> 1) - 1;
25
  /* Fixing alignment after unaligned BrotliFillWindow would result accumulator
26
     overflow. If unalignment is caused by BrotliSafeReadBits, then there is
27
     enough space in accumulator to fix alignment. */
28
94.1k
  if (!BROTLI_ALIGNED_READ) {
29
94.1k
    aligned_read_mask = 0;
30
94.1k
  }
31
94.1k
  if (BrotliGetAvailableBits(br) == 0) {
32
25.7k
    if (!BrotliPullByte(br)) {
33
3.05k
      return BROTLI_FALSE;
34
3.05k
    }
35
25.7k
  }
36
37
91.0k
  while ((((size_t)br->next_in) & aligned_read_mask) != 0) {
38
0
    if (!BrotliPullByte(br)) {
39
      /* If we consumed all the input, we don't care about the alignment. */
40
0
      return BROTLI_TRUE;
41
0
    }
42
0
  }
43
91.0k
  return BROTLI_TRUE;
44
91.0k
}
45
46
#if defined(__cplusplus) || defined(c_plusplus)
47
}  /* extern "C" */
48
#endif