Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/modules/brotli/dec/bit_reader.c
Line
Count
Source (jump to first uncovered line)
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
0
void BrotliInitBitReader(BrotliBitReader* const br) {
19
0
  br->val_ = 0;
20
0
  br->bit_pos_ = sizeof(br->val_) << 3;
21
0
}
22
23
0
BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* const br) {
24
0
  size_t aligned_read_mask = (sizeof(br->val_) >> 1) - 1;
25
0
  /* Fixing alignment after unaligned BrotliFillWindow would result accumulator
26
0
     overflow. If unalignment is caused by BrotliSafeReadBits, then there is
27
0
     enough space in accumulator to fix alignment. */
28
0
  if (!BROTLI_ALIGNED_READ) {
29
0
    aligned_read_mask = 0;
30
0
  }
31
0
  if (BrotliGetAvailableBits(br) == 0) {
32
0
    if (!BrotliPullByte(br)) {
33
0
      return BROTLI_FALSE;
34
0
    }
35
0
  }
36
0
37
0
  while ((((size_t)br->next_in) & aligned_read_mask) != 0) {
38
0
    if (!BrotliPullByte(br)) {
39
0
      /* If we consumed all the input, we don't care about the alignment. */
40
0
      return BROTLI_TRUE;
41
0
    }
42
0
  }
43
0
  return BROTLI_TRUE;
44
0
}
45
46
#if defined(__cplusplus) || defined(c_plusplus)
47
}  /* extern "C" */
48
#endif