summaryrefslogtreecommitdiff
path: root/alloc.c
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-09-05 15:45:27 +0000
committerrodri <rgl@antares-labs.eu>2024-09-05 15:45:27 +0000
commit97bc549d4b8bf638946ac4ff3b066941bca9a03b (patch)
tree5bd5ca788c8e3577dda001e0454157c9408ac08f /alloc.c
parent11087295a24b0a8d08897824c7ee9676026fa159 (diff)
downloadsemblance-97bc549d4b8bf638946ac4ff3b066941bca9a03b.tar.gz
semblance-97bc549d4b8bf638946ac4ff3b066941bca9a03b.tar.bz2
semblance-97bc549d4b8bf638946ac4ff3b066941bca9a03b.zip
initial compiler work.
Diffstat (limited to 'alloc.c')
-rw-r--r--alloc.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/alloc.c b/alloc.c
new file mode 100644
index 0000000..afd57bc
--- /dev/null
+++ b/alloc.c
@@ -0,0 +1,43 @@
+#include <u.h>
+#include <libc.h>
+
+void *
+emalloc(ulong n)
+{
+ void *p;
+
+ p = malloc(n);
+ if(p == nil)
+ sysfatal("malloc: %r");
+ setmalloctag(p, getcallerpc(&n));
+ return p;
+}
+
+void *
+erealloc(void *p, ulong n)
+{
+ void *np;
+
+ np = realloc(p, n);
+ if(np == nil){
+ if(n == 0)
+ return nil;
+ sysfatal("realloc: %r");
+ }
+ if(p == nil)
+ setmalloctag(np, getcallerpc(&p));
+ else
+ setrealloctag(np, getcallerpc(&p));
+ return np;
+}
+
+char *
+estrdup(char *s)
+{
+ char *ns;
+
+ ns = strdup(s);
+ if(ns == nil)
+ sysfatal("strdup: %r");
+ return ns;
+}