home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 498a.lha / SC_v6.7 / xmalloc.c < prev    next >
C/C++ Source or Header  |  1991-04-08  |  686b  |  47 lines

  1. /*
  2.  * A safer saner malloc, for careless programmers
  3.  * $Revision: 6.8 $
  4.  */
  5.  
  6. #include <stdio.h>
  7. #include <curses.h>
  8. #include "sc.h"
  9.  
  10. extern char *malloc();
  11.  
  12. #ifdef SYSV3
  13. extern void free();
  14. extern void exit();
  15. #endif
  16.  
  17. char *
  18. xmalloc(n)
  19. unsigned n;
  20. {
  21. register char *ptr;
  22.  
  23. if ((ptr = malloc(n + sizeof(double))) == NULL)
  24.     fatal("xmalloc: no memory");
  25. *((int *) ptr) = 12345;        /* magic number */
  26. return(ptr + sizeof(double));
  27. }
  28.  
  29. xfree(p)
  30. char *p;
  31. {
  32. if (p == NULL)
  33.     fatal("xfree: NULL");
  34. p -= sizeof(double);
  35. if (*((int *) p) != 12345)
  36.     fatal("xfree: storage not malloc'ed");
  37. free(p);
  38. }
  39.  
  40. fatal(str)
  41. char *str;
  42. {
  43.     deraw();
  44.     (void) fprintf(stderr,"%s\n", str);
  45.     exit(1);
  46. }
  47.