smballoc.c 508 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "headers.h"
  2. #ifndef LEAK
  3. void *
  4. smbemallocz(ulong size, int clear)
  5. {
  6. void *p = nbemalloc(size);
  7. if (clear && p)
  8. memset(p, 0, size);
  9. return p;
  10. }
  11. void *
  12. smbemalloc(ulong size)
  13. {
  14. return smbemallocz(size, 0);
  15. }
  16. char *
  17. smbestrdup(char *p)
  18. {
  19. char *q;
  20. q = smbemalloc(strlen(p) + 1);
  21. return strcpy(q, p);
  22. }
  23. #endif
  24. void
  25. smbfree(void **pp)
  26. {
  27. void *p = *pp;
  28. if (p) {
  29. free(p);
  30. *pp = nil;
  31. }
  32. }
  33. void
  34. smberealloc(void **pp, ulong size)
  35. {
  36. *pp = realloc(*pp, size);
  37. assert(size == 0 || *pp);
  38. }