Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
3.2 KiB

  1. /*
  2. * jmemnobs.c
  3. *
  4. * Copyright (C) 1992-1996, Thomas G. Lane.
  5. * This file is part of the Independent JPEG Group's software.
  6. * For conditions of distribution and use, see the accompanying README file.
  7. *
  8. * This file provides a really simple implementation of the system-
  9. * dependent portion of the JPEG memory manager. This implementation
  10. * assumes that no backing-store files are needed: all required space
  11. * can be obtained from malloc().
  12. * This is very portable in the sense that it'll compile on almost anything,
  13. * but you'd better have lots of main memory (or virtual memory) if you want
  14. * to process big images.
  15. * Note that the max_memory_to_use option is ignored by this implementation.
  16. */
  17. #define JPEG_INTERNALS
  18. #include "stdafx.h"
  19. #include "jinclude.h"
  20. #include "jpeglib.h"
  21. #include "jmemsys.h" /* import the system-dependent declarations */
  22. #include "jpegapi.h"
  23. //#ifndef HAVE_STDLIB_H /* <stdlib.h> should declare malloc(),free() */
  24. //extern void * malloc JPP((size_t size));
  25. //extern void free JPP((void *ptr));
  26. //#endif
  27. #define malloc(x) LocalAlloc(0,x)
  28. #define free(x) LocalFree(x)
  29. //extern HANDLE hHeap;
  30. //#define malloc(x) HeapAlloc(hHeap, 0, x)
  31. //#define free(x) HeapFree(hHeap, 0, x)
  32. /*
  33. * Memory allocation and freeing are controlled by the regular library
  34. * routines malloc() and free().
  35. */
  36. //Modified for better exception handling - ajais
  37. GLOBAL(void *)
  38. jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject)
  39. {
  40. void *AllocatedChunk;
  41. AllocatedChunk = (void *) malloc(sizeofobject);
  42. if (AllocatedChunk == NULL) throw THROWN( E_OUTOFMEMORY );
  43. return AllocatedChunk;
  44. }
  45. GLOBAL(void)
  46. jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject)
  47. {
  48. free(object);
  49. }
  50. /*
  51. * "Large" objects are treated the same as "small" ones.
  52. * NB: although we include FAR keywords in the routine declarations,
  53. * this file won't actually work in 80x86 small/medium model; at least,
  54. * you probably won't be able to process useful-size images in only 64KB.
  55. */
  56. GLOBAL(void FAR *)
  57. jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject)
  58. {
  59. void FAR *AllocatedChunk;
  60. AllocatedChunk = (void FAR *) malloc(sizeofobject);
  61. if (AllocatedChunk == NULL) throw THROWN( E_OUTOFMEMORY );
  62. return AllocatedChunk;
  63. }
  64. GLOBAL(void)
  65. jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject)
  66. {
  67. free(object);
  68. }
  69. /*
  70. * This routine computes the total memory space available for allocation.
  71. * Here we always say, "we got all you want bud!"
  72. */
  73. GLOBAL(long)
  74. jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed,
  75. long max_bytes_needed, long already_allocated)
  76. {
  77. return max_bytes_needed;
  78. }
  79. /*
  80. * Backing store (temporary file) management.
  81. * Since jpeg_mem_available always promised the moon,
  82. * this should never be called and we can just error out.
  83. */
  84. GLOBAL(void)
  85. jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info,
  86. long total_bytes_needed)
  87. {
  88. ERREXIT(cinfo, JERR_NO_BACKING_STORE);
  89. }
  90. /*
  91. * These routines take care of any system-dependent initialization and
  92. * cleanup required. Here, there isn't any.
  93. */
  94. GLOBAL(long)
  95. jpeg_mem_init (j_common_ptr cinfo)
  96. {
  97. return 0; /* just set max_memory_to_use to 0 */
  98. }
  99. GLOBAL(void)
  100. jpeg_mem_term (j_common_ptr cinfo)
  101. {
  102. /* no work */
  103. }