Coverage Report

Created: 2025-11-11 06:44

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libcbor/src/cbor/internal/stack.c
Line
Count
Source
1
/*
2
 * Copyright (c) 2014-2020 Pavel Kalvoda <me@pavelkalvoda.com>
3
 *
4
 * libcbor is free software; you can redistribute it and/or modify
5
 * it under the terms of the MIT license. See LICENSE for details.
6
 */
7
8
#include "stack.h"
9
10
128k
struct _cbor_stack _cbor_stack_init(void) {
11
128k
  return (struct _cbor_stack){.top = NULL, .size = 0};
12
128k
}
13
14
1.88M
void _cbor_stack_pop(struct _cbor_stack *stack) {
15
1.88M
  struct _cbor_stack_record *top = stack->top;
16
1.88M
  stack->top = stack->top->lower;
17
1.88M
  _cbor_free(top);
18
1.88M
  stack->size--;
19
1.88M
}
20
21
struct _cbor_stack_record *_cbor_stack_push(struct _cbor_stack *stack,
22
                                            cbor_item_t *item,
23
1.88M
                                            size_t subitems) {
24
1.88M
  if (stack->size == CBOR_MAX_STACK_SIZE) return NULL;
25
1.88M
  struct _cbor_stack_record *new_top =
26
1.88M
      _cbor_malloc(sizeof(struct _cbor_stack_record));
27
1.88M
  if (new_top == NULL) return NULL;
28
29
1.88M
  *new_top = (struct _cbor_stack_record){stack->top, item, subitems};
30
1.88M
  stack->top = new_top;
31
1.88M
  stack->size++;
32
1.88M
  return new_top;
33
1.88M
}