Coverage Report

Created: 2025-11-16 06:23

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/lzma-fuzz/sdk/C/Delta.c
Line
Count
Source
1
/* Delta.c -- Delta converter
2
2009-05-26 : Igor Pavlov : Public domain */
3
4
#include "Precomp.h"
5
6
#include "Delta.h"
7
8
void Delta_Init(Byte *state)
9
1.05k
{
10
1.05k
  unsigned i;
11
271k
  for (i = 0; i < DELTA_STATE_SIZE; i++)
12
270k
    state[i] = 0;
13
1.05k
}
14
15
static void MyMemCpy(Byte *dest, const Byte *src, unsigned size)
16
22.5k
{
17
22.5k
  unsigned i;
18
398k
  for (i = 0; i < size; i++)
19
376k
    dest[i] = src[i];
20
22.5k
}
21
22
void Delta_Encode(Byte *state, unsigned delta, Byte *data, SizeT size)
23
3.72k
{
24
3.72k
  Byte buf[DELTA_STATE_SIZE];
25
3.72k
  unsigned j = 0;
26
3.72k
  MyMemCpy(buf, state, delta);
27
3.72k
  {
28
3.72k
    SizeT i;
29
27.2M
    for (i = 0; i < size;)
30
27.2M
    {
31
81.4M
      for (j = 0; j < delta && i < size; i++, j++)
32
54.1M
      {
33
54.1M
        Byte b = data[i];
34
54.1M
        data[i] = (Byte)(b - buf[j]);
35
54.1M
        buf[j] = b;
36
54.1M
      }
37
27.2M
    }
38
3.72k
  }
39
3.72k
  if (j == delta)
40
1.43k
    j = 0;
41
3.72k
  MyMemCpy(state, buf + j, delta - j);
42
3.72k
  MyMemCpy(state + delta - j, buf, j);
43
3.72k
}
44
45
void Delta_Decode(Byte *state, unsigned delta, Byte *data, SizeT size)
46
3.80k
{
47
3.80k
  Byte buf[DELTA_STATE_SIZE];
48
3.80k
  unsigned j = 0;
49
3.80k
  MyMemCpy(buf, state, delta);
50
3.80k
  {
51
3.80k
    SizeT i;
52
27.2M
    for (i = 0; i < size;)
53
27.2M
    {
54
81.4M
      for (j = 0; j < delta && i < size; i++, j++)
55
54.1M
      {
56
54.1M
        buf[j] = data[i] = (Byte)(buf[j] + data[i]);
57
54.1M
      }
58
27.2M
    }
59
3.80k
  }
60
3.80k
  if (j == delta)
61
1.46k
    j = 0;
62
3.80k
  MyMemCpy(state, buf + j, delta - j);
63
3.80k
  MyMemCpy(state + delta - j, buf, j);
64
3.80k
}