Coverage Report

Created: 2026-05-14 06:19

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/hoextdown/src/stack.c
Line
Count
Source
1
#include "stack.h"
2
3
#include "buffer.h"
4
5
#include <stdlib.h>
6
#include <string.h>
7
#include <assert.h>
8
9
void
10
hoedown_stack_init(hoedown_stack *st, size_t initial_size)
11
25.7k
{
12
25.7k
  assert(st);
13
14
25.7k
  st->item = NULL;
15
25.7k
  st->size = st->asize = 0;
16
17
25.7k
  if (!initial_size)
18
0
    initial_size = 8;
19
20
25.7k
  hoedown_stack_grow(st, initial_size);
21
25.7k
}
22
23
void
24
hoedown_stack_uninit(hoedown_stack *st)
25
25.7k
{
26
25.7k
  assert(st);
27
28
25.7k
  free(st->item);
29
25.7k
}
30
31
void
32
hoedown_stack_grow(hoedown_stack *st, size_t neosz)
33
27.4k
{
34
27.4k
  assert(st);
35
36
27.4k
  if (st->asize >= neosz)
37
0
    return;
38
39
27.4k
  st->item = hoedown_realloc(st->item, neosz * sizeof(void *));
40
27.4k
  memset(st->item + st->asize, 0x0, (neosz - st->asize) * sizeof(void *));
41
42
27.4k
  st->asize = neosz;
43
44
27.4k
  if (st->size > neosz)
45
0
    st->size = neosz;
46
27.4k
}
47
48
void
49
hoedown_stack_push(hoedown_stack *st, void *item)
50
67.1k
{
51
67.1k
  assert(st);
52
53
67.1k
  if (st->size >= st->asize)
54
1.70k
    hoedown_stack_grow(st, st->size * 2);
55
56
67.1k
  st->item[st->size++] = item;
57
67.1k
}
58
59
void *
60
hoedown_stack_pop(hoedown_stack *st)
61
0
{
62
0
  assert(st);
63
64
0
  if (!st->size)
65
0
    return NULL;
66
67
0
  return st->item[--st->size];
68
0
}
69
70
void *
71
hoedown_stack_top(const hoedown_stack *st)
72
0
{
73
0
  assert(st);
74
75
0
  if (!st->size)
76
0
    return NULL;
77
78
0
  return st->item[st->size - 1];
79
0
}