Coverage Report

Created: 2024-08-27 12:11

/src/libjpeg-turbo.main/jmemnobs.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * jmemnobs.c
3
 *
4
 * This file was part of the Independent JPEG Group's software:
5
 * Copyright (C) 1992-1996, Thomas G. Lane.
6
 * libjpeg-turbo Modifications:
7
 * Copyright (C) 2017-2018, D. R. Commander.
8
 * For conditions of distribution and use, see the accompanying README.ijg
9
 * file.
10
 *
11
 * This file provides a really simple implementation of the system-
12
 * dependent portion of the JPEG memory manager.  This implementation
13
 * assumes that no backing-store files are needed: all required space
14
 * can be obtained from malloc().
15
 * This is very portable in the sense that it'll compile on almost anything,
16
 * but you'd better have lots of main memory (or virtual memory) if you want
17
 * to process big images.
18
 */
19
20
#define JPEG_INTERNALS
21
#include "jinclude.h"
22
#include "jpeglib.h"
23
#include "jmemsys.h"            /* import the system-dependent declarations */
24
25
26
/*
27
 * Memory allocation and freeing are controlled by the regular library
28
 * routines malloc() and free().
29
 */
30
31
GLOBAL(void *)
32
jpeg_get_small(j_common_ptr cinfo, size_t sizeofobject)
33
645k
{
34
645k
  return (void *)malloc(sizeofobject);
35
645k
}
36
37
GLOBAL(void)
38
jpeg_free_small(j_common_ptr cinfo, void *object, size_t sizeofobject)
39
645k
{
40
645k
  free(object);
41
645k
}
42
43
44
/*
45
 * "Large" objects are treated the same as "small" ones.
46
 */
47
48
GLOBAL(void *)
49
jpeg_get_large(j_common_ptr cinfo, size_t sizeofobject)
50
639k
{
51
639k
  return (void *)malloc(sizeofobject);
52
639k
}
53
54
GLOBAL(void)
55
jpeg_free_large(j_common_ptr cinfo, void *object, size_t sizeofobject)
56
639k
{
57
639k
  free(object);
58
639k
}
59
60
61
/*
62
 * This routine computes the total memory space available for allocation.
63
 */
64
65
GLOBAL(size_t)
66
jpeg_mem_available(j_common_ptr cinfo, size_t min_bytes_needed,
67
                   size_t max_bytes_needed, size_t already_allocated)
68
53.2k
{
69
53.2k
  if (cinfo->mem->max_memory_to_use) {
70
0
    if ((size_t)cinfo->mem->max_memory_to_use > already_allocated)
71
0
      return cinfo->mem->max_memory_to_use - already_allocated;
72
0
    else
73
0
      return 0;
74
53.2k
  } else {
75
    /* Here we always say, "we got all you want bud!" */
76
53.2k
    return max_bytes_needed;
77
53.2k
  }
78
53.2k
}
79
80
81
/*
82
 * Backing store (temporary file) management.
83
 * Since jpeg_mem_available always promised the moon,
84
 * this should never be called and we can just error out.
85
 */
86
87
GLOBAL(void)
88
jpeg_open_backing_store(j_common_ptr cinfo, backing_store_ptr info,
89
                        long total_bytes_needed)
90
0
{
91
0
  ERREXIT(cinfo, JERR_NO_BACKING_STORE);
92
0
}
93
94
95
/*
96
 * These routines take care of any system-dependent initialization and
97
 * cleanup required.  Here, there isn't any.
98
 */
99
100
GLOBAL(long)
101
jpeg_mem_init(j_common_ptr cinfo)
102
185k
{
103
185k
  return 0;                     /* just set max_memory_to_use to 0 */
104
185k
}
105
106
GLOBAL(void)
107
jpeg_mem_term(j_common_ptr cinfo)
108
185k
{
109
  /* no work */
110
185k
}