summaryrefslogtreecommitdiffstats
path: root/bin/sh/memalloc.h
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2010-12-26 13:25:47 +0000
committerjilles <jilles@FreeBSD.org>2010-12-26 13:25:47 +0000
commitde73f385a5709ba788137d94801ead1014f1c5f0 (patch)
tree02dc00ec14f40f9ed9b75e0e6b62988d28b2ba9f /bin/sh/memalloc.h
parent290c1ef87ffbfdb591c830fd2874a87241390022 (diff)
downloadFreeBSD-src-de73f385a5709ba788137d94801ead1014f1c5f0.zip
FreeBSD-src-de73f385a5709ba788137d94801ead1014f1c5f0.tar.gz
sh: Allow arbitrary large numbers in CHECKSTRSPACE.
Reduce "stack string" API somewhat and simplify code. Add a check for integer overflow of the "stack string" length (probably incomplete).
Diffstat (limited to 'bin/sh/memalloc.h')
-rw-r--r--bin/sh/memalloc.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/bin/sh/memalloc.h b/bin/sh/memalloc.h
index da23a95..fcdd5ba 100644
--- a/bin/sh/memalloc.h
+++ b/bin/sh/memalloc.h
@@ -55,10 +55,9 @@ pointer stalloc(int);
void stunalloc(pointer);
void setstackmark(struct stackmark *);
void popstackmark(struct stackmark *);
-void growstackblock(void);
void grabstackblock(int);
char *growstackstr(void);
-char *makestrspace(void);
+char *makestrspace(int);
void ungrabstackstr(char *, char *);
char *stputbin(const char *data, int len, char *p);
char *stputs(const char *data, char *p);
@@ -69,7 +68,7 @@ char *stputs(const char *data, char *p);
#define stackblocksize() stacknleft
#define STARTSTACKSTR(p) p = stackblock(), sstrnleft = stackblocksize()
#define STPUTC(c, p) (--sstrnleft >= 0? (*p++ = (c)) : (p = growstackstr(), --sstrnleft, *p++ = (c)))
-#define CHECKSTRSPACE(n, p) { if (sstrnleft < n) p = makestrspace(); }
+#define CHECKSTRSPACE(n, p) { if (sstrnleft < n) p = makestrspace(n); }
#define USTPUTC(c, p) (--sstrnleft, *p++ = (c))
/*
* STACKSTRNUL's use is where we want to be able to turn a stack
OpenPOWER on IntegriCloud