/src/libjpeg-turbo.2.0.x/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  |  | #ifndef HAVE_STDLIB_H           /* <stdlib.h> should declare malloc(),free() */  | 
26  |  | extern void *malloc(size_t size);  | 
27  |  | extern void free(void *ptr);  | 
28  |  | #endif  | 
29  |  |  | 
30  |  |  | 
31  |  | /*  | 
32  |  |  * Memory allocation and freeing are controlled by the regular library  | 
33  |  |  * routines malloc() and free().  | 
34  |  |  */  | 
35  |  |  | 
36  |  | GLOBAL(void *)  | 
37  |  | jpeg_get_small(j_common_ptr cinfo, size_t sizeofobject)  | 
38  | 1.29M  | { | 
39  | 1.29M  |   return (void *)malloc(sizeofobject);  | 
40  | 1.29M  | }  | 
41  |  |  | 
42  |  | GLOBAL(void)  | 
43  |  | jpeg_free_small(j_common_ptr cinfo, void *object, size_t sizeofobject)  | 
44  | 1.29M  | { | 
45  | 1.29M  |   free(object);  | 
46  | 1.29M  | }  | 
47  |  |  | 
48  |  |  | 
49  |  | /*  | 
50  |  |  * "Large" objects are treated the same as "small" ones.  | 
51  |  |  */  | 
52  |  |  | 
53  |  | GLOBAL(void *)  | 
54  |  | jpeg_get_large(j_common_ptr cinfo, size_t sizeofobject)  | 
55  | 1.68M  | { | 
56  | 1.68M  |   return (void *)malloc(sizeofobject);  | 
57  | 1.68M  | }  | 
58  |  |  | 
59  |  | GLOBAL(void)  | 
60  |  | jpeg_free_large(j_common_ptr cinfo, void *object, size_t sizeofobject)  | 
61  | 1.68M  | { | 
62  | 1.68M  |   free(object);  | 
63  | 1.68M  | }  | 
64  |  |  | 
65  |  |  | 
66  |  | /*  | 
67  |  |  * This routine computes the total memory space available for allocation.  | 
68  |  |  */  | 
69  |  |  | 
70  |  | GLOBAL(size_t)  | 
71  |  | jpeg_mem_available(j_common_ptr cinfo, size_t min_bytes_needed,  | 
72  |  |                    size_t max_bytes_needed, size_t already_allocated)  | 
73  | 99.8k  | { | 
74  | 99.8k  |   if (cinfo->mem->max_memory_to_use) { | 
75  | 0  |     if ((size_t)cinfo->mem->max_memory_to_use > already_allocated)  | 
76  | 0  |       return cinfo->mem->max_memory_to_use - already_allocated;  | 
77  | 0  |     else  | 
78  | 0  |       return 0;  | 
79  | 99.8k  |   } else { | 
80  |  |     /* Here we always say, "we got all you want bud!" */  | 
81  | 99.8k  |     return max_bytes_needed;  | 
82  | 99.8k  |   }  | 
83  | 99.8k  | }  | 
84  |  |  | 
85  |  |  | 
86  |  | /*  | 
87  |  |  * Backing store (temporary file) management.  | 
88  |  |  * Since jpeg_mem_available always promised the moon,  | 
89  |  |  * this should never be called and we can just error out.  | 
90  |  |  */  | 
91  |  |  | 
92  |  | GLOBAL(void)  | 
93  |  | jpeg_open_backing_store(j_common_ptr cinfo, backing_store_ptr info,  | 
94  |  |                         long total_bytes_needed)  | 
95  | 0  | { | 
96  | 0  |   ERREXIT(cinfo, JERR_NO_BACKING_STORE);  | 
97  | 0  | }  | 
98  |  |  | 
99  |  |  | 
100  |  | /*  | 
101  |  |  * These routines take care of any system-dependent initialization and  | 
102  |  |  * cleanup required.  Here, there isn't any.  | 
103  |  |  */  | 
104  |  |  | 
105  |  | GLOBAL(long)  | 
106  |  | jpeg_mem_init(j_common_ptr cinfo)  | 
107  | 317k  | { | 
108  | 317k  |   return 0;                     /* just set max_memory_to_use to 0 */  | 
109  | 317k  | }  | 
110  |  |  | 
111  |  | GLOBAL(void)  | 
112  |  | jpeg_mem_term(j_common_ptr cinfo)  | 
113  | 317k  | { | 
114  |  |   /* no work */  | 
115  | 317k  | }  |