tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

jmemnobs.c (2680B)


      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, 2024, 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 {
     34  return (void *)MALLOC(sizeofobject);
     35 }
     36 
     37 GLOBAL(void)
     38 jpeg_free_small(j_common_ptr cinfo, void *object, size_t sizeofobject)
     39 {
     40  free(object);
     41 }
     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 {
     51  return (void *)MALLOC(sizeofobject);
     52 }
     53 
     54 GLOBAL(void)
     55 jpeg_free_large(j_common_ptr cinfo, void *object, size_t sizeofobject)
     56 {
     57  free(object);
     58 }
     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 {
     69  if (cinfo->mem->max_memory_to_use) {
     70    if ((size_t)cinfo->mem->max_memory_to_use > already_allocated)
     71      return cinfo->mem->max_memory_to_use - already_allocated;
     72    else
     73      return 0;
     74  } else {
     75    /* Here we always say, "we got all you want bud!" */
     76    return max_bytes_needed;
     77  }
     78 }
     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 {
     91  ERREXIT(cinfo, JERR_NO_BACKING_STORE);
     92 }
     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 {
    103  return 0;                     /* just set max_memory_to_use to 0 */
    104 }
    105 
    106 GLOBAL(void)
    107 jpeg_mem_term(j_common_ptr cinfo)
    108 {
    109  /* no work */
    110 }