diff options
Diffstat (limited to 'media/libjpeg/jmemnobs.c')
-rw-r--r-- | media/libjpeg/jmemnobs.c | 45 |
1 files changed, 23 insertions, 22 deletions
diff --git a/media/libjpeg/jmemnobs.c b/media/libjpeg/jmemnobs.c index 5797198de8..cd6571ba1c 100644 --- a/media/libjpeg/jmemnobs.c +++ b/media/libjpeg/jmemnobs.c @@ -3,8 +3,8 @@ * * This file was part of the Independent JPEG Group's software: * Copyright (C) 1992-1996, Thomas G. Lane. - * It was modified by The libjpeg-turbo Project to include only code and - * information relevant to libjpeg-turbo. + * libjpeg-turbo Modifications: + * Copyright (C) 2017-2018, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -15,7 +15,6 @@ * This is very portable in the sense that it'll compile on almost anything, * but you'd better have lots of main memory (or virtual memory) if you want * to process big images. - * Note that the max_memory_to_use option is ignored by this implementation. */ #define JPEG_INTERNALS @@ -23,11 +22,6 @@ #include "jpeglib.h" #include "jmemsys.h" /* import the system-dependent declarations */ -#ifndef HAVE_STDLIB_H /* <stdlib.h> should declare malloc(),free() */ -extern void *malloc (size_t size); -extern void free (void *ptr); -#endif - /* * Memory allocation and freeing are controlled by the regular library @@ -35,13 +29,13 @@ extern void free (void *ptr); */ GLOBAL(void *) -jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject) +jpeg_get_small(j_common_ptr cinfo, size_t sizeofobject) { - return (void *) malloc(sizeofobject); + return (void *)malloc(sizeofobject); } GLOBAL(void) -jpeg_free_small (j_common_ptr cinfo, void *object, size_t sizeofobject) +jpeg_free_small(j_common_ptr cinfo, void *object, size_t sizeofobject) { free(object); } @@ -52,13 +46,13 @@ jpeg_free_small (j_common_ptr cinfo, void *object, size_t sizeofobject) */ GLOBAL(void *) -jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject) +jpeg_get_large(j_common_ptr cinfo, size_t sizeofobject) { - return (void *) malloc(sizeofobject); + return (void *)malloc(sizeofobject); } GLOBAL(void) -jpeg_free_large (j_common_ptr cinfo, void *object, size_t sizeofobject) +jpeg_free_large(j_common_ptr cinfo, void *object, size_t sizeofobject) { free(object); } @@ -66,14 +60,21 @@ jpeg_free_large (j_common_ptr cinfo, void *object, size_t sizeofobject) /* * This routine computes the total memory space available for allocation. - * Here we always say, "we got all you want bud!" */ GLOBAL(size_t) -jpeg_mem_available (j_common_ptr cinfo, size_t min_bytes_needed, - size_t max_bytes_needed, size_t already_allocated) +jpeg_mem_available(j_common_ptr cinfo, size_t min_bytes_needed, + size_t max_bytes_needed, size_t already_allocated) { - return max_bytes_needed; + if (cinfo->mem->max_memory_to_use) { + if ((size_t)cinfo->mem->max_memory_to_use > already_allocated) + return cinfo->mem->max_memory_to_use - already_allocated; + else + return 0; + } else { + /* Here we always say, "we got all you want bud!" */ + return max_bytes_needed; + } } @@ -84,8 +85,8 @@ jpeg_mem_available (j_common_ptr cinfo, size_t min_bytes_needed, */ GLOBAL(void) -jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, - long total_bytes_needed) +jpeg_open_backing_store(j_common_ptr cinfo, backing_store_ptr info, + long total_bytes_needed) { ERREXIT(cinfo, JERR_NO_BACKING_STORE); } @@ -97,13 +98,13 @@ jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, */ GLOBAL(long) -jpeg_mem_init (j_common_ptr cinfo) +jpeg_mem_init(j_common_ptr cinfo) { return 0; /* just set max_memory_to_use to 0 */ } GLOBAL(void) -jpeg_mem_term (j_common_ptr cinfo) +jpeg_mem_term(j_common_ptr cinfo) { /* no work */ } |