home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / midas / mmem.c < prev    next >
C/C++ Source or Header  |  1994-08-06  |  3KB  |  96 lines

  1. /*      MMEM.C
  2.  *
  3.  * MIDAS Sound System memory handling routines
  4.  *
  5.  * Copyright 1994 Petteri Kangaslampi and Jarno Paananen
  6.  *
  7.  * This file is part of the MIDAS Sound System, and may only be
  8.  * used, modified and distributed under the terms of the MIDAS
  9.  * Sound System license, LICENSE.TXT. By continuing to use,
  10.  * modify or distribute this file you indicate that you have
  11.  * read the license and understand and accept it fully.
  12. */
  13.  
  14. #include <stdlib.h>
  15. #include <alloc.h>
  16. #include "lang.h"
  17. #include "errors.h"
  18. #include "mmem.h"
  19.  
  20.  
  21. /****************************************************************************\
  22. *
  23. * Function:     int memAlloc(unsigned short len, void **blk);
  24. *
  25. * Description:  Allocates a block of conventional memory
  26. *
  27. * Input:        unsigned short len      Memory block length in bytes
  28. *               void **blk              Pointer to memory block pointer
  29. *
  30. * Returns:      MIDAS error code.
  31. *               Pointer to allocated block stored in *blk, NULL if error.
  32. *
  33. \****************************************************************************/
  34.  
  35. int CALLING memAlloc(unsigned short len, void **blk)
  36. {
  37.     /* check that block length is not zero: */
  38.     if ( len == 0 )
  39.     {
  40.         ERROR(errInvalidBlock, ID_memAlloc);
  41.         return errInvalidBlock;
  42.     }
  43.  
  44.     /* allocate memory: */
  45.     *blk = malloc(len);
  46.  
  47.     if ( *blk == NULL )
  48.     {
  49.         /* Memory allocation failed - check if heap is corrupted. If not,
  50.            assume out of memory: */
  51.         if ( heapcheck() == _HEAPCORRUPT )
  52.         {
  53.             ERROR(errHeapCorrupted, ID_memAlloc);
  54.             return errHeapCorrupted;
  55.         }
  56.         else
  57.         {
  58.             ERROR(errOutOfMemory, ID_memAlloc);
  59.             return errOutOfMemory;
  60.         }
  61.     }
  62.  
  63.     /* memory allocated successfully */
  64.     return OK;
  65. }
  66.  
  67.  
  68.  
  69. /****************************************************************************\
  70. *
  71. * Function:     int memFree(void *blk);
  72. *
  73. * Description:  Deallocates a memory block allocated with memAlloc()
  74. *
  75. * Input:        void *blk               Memory block pointer
  76. *
  77. * Returns:      MIDAS error code.
  78. *
  79. \****************************************************************************/
  80.  
  81. int CALLING memFree(void *blk)
  82. {
  83.     /* Check that block pointer is not NULL: */
  84.     if ( blk == NULL )
  85.     {
  86.         ERROR(errInvalidBlock, ID_memFree);
  87.         return errInvalidBlock;
  88.     }
  89.  
  90.     /* deallocate block: */
  91.     free(blk);
  92.  
  93.     /* deallocation successful */
  94.     return OK;
  95. }
  96.