Displaying 8 results from an estimated 8 matches for "stackblocksize".
2020 Mar 28
0
[klibc:update-dash] dash: memalloc: Add growstackto helper
...c.c
+++ b/usr/dash/exec.c
@@ -195,9 +195,7 @@ padvance(const char **path, const char *name)
start = *path;
for (p = start ; *p && *p != ':' && *p != '%' ; p++);
len = p - start + strlen(name) + 2; /* "2" is for '/' and '\0' */
- while (stackblocksize() < len)
- growstackblock();
- q = stackblock();
+ q = growstackto(len);
if (p != start) {
memcpy(q, start, p - start);
q += p - start;
diff --git a/usr/dash/memalloc.c b/usr/dash/memalloc.c
index d8e4413d..9d1de74a 100644
--- a/usr/dash/memalloc.c
+++ b/usr/dash/memalloc.c
@@ -265,6 +2...
2020 Mar 28
0
[klibc:update-dash] dash: memalloc: Avoid looping in growstackto
...f space");
- if (newlen < 128)
- newlen += 128;
+ min = SHELL_ALIGN(min | 128);
+ if (newlen < min)
+ newlen += min;
if (stacknxt == stackp->space && stackp != &stackbase) {
struct stack_block *sp;
@@ -261,15 +261,15 @@ void *
growstackstr(void)
{
size_t len = stackblocksize();
- growstackblock();
+
+ growstackblock(0);
return stackblock() + len;
}
char *growstackto(size_t len)
{
- while (stackblocksize() < len)
- growstackblock();
-
+ if (stackblocksize() < len)
+ growstackblock(len);
return stackblock();
}
diff --git a/usr/dash/memalloc.h b/usr/da...
2019 Jan 25
0
[klibc:update-dash] [BUILTIN] Handle embedded NULs correctly in printf
...sprintf(char **sp, size_t size, const char *f, va_list ap)
+{
+ char *s;
+ int len;
+ va_list ap2;
+
+ va_copy(ap2, ap);
+ len = xvsnprintf(*sp, size, f, ap2);
+ va_end(ap2);
+ if (len < 0)
+ sh_error("xvsnprintf failed");
+ if (len < size)
+ return len;
+
+ s = stalloc((len >= stackblocksize() ? len : stackblocksize()) + 1);
+ *sp = s;
+ len = xvsnprintf(s, len + 1, f, ap);
+ return len;
+}
+
+
+int xasprintf(char **sp, const char *f, ...)
+{
+ va_list ap;
+ int ret;
+
+ va_start(ap, f);
+ ret = xvasprintf(sp, 0, f, ap);
+ va_end(ap);
+ return ret;
+}
+
+
#ifndef USE_GLIBC_STDIO
void...
2020 Mar 28
0
[klibc:update-dash] dash: [BUILTIN] Handle embedded NULs correctly in printf
...sprintf(char **sp, size_t size, const char *f, va_list ap)
+{
+ char *s;
+ int len;
+ va_list ap2;
+
+ va_copy(ap2, ap);
+ len = xvsnprintf(*sp, size, f, ap2);
+ va_end(ap2);
+ if (len < 0)
+ sh_error("xvsnprintf failed");
+ if (len < size)
+ return len;
+
+ s = stalloc((len >= stackblocksize() ? len : stackblocksize()) + 1);
+ *sp = s;
+ len = xvsnprintf(s, len + 1, f, ap);
+ return len;
+}
+
+
+int xasprintf(char **sp, const char *f, ...)
+{
+ va_list ap;
+ int ret;
+
+ va_start(ap, f);
+ ret = xvasprintf(sp, 0, f, ap);
+ va_end(ap);
+ return ret;
+}
+
+
#ifndef USE_GLIBC_STDIO
void...
2019 Jan 25
0
[klibc:update-dash] input: Fix here-document redirection with vi/emacs on
.../usr/dash/input.c b/usr/dash/input.c
index 06c08d49..e53423c5 100644
--- a/usr/dash/input.c
+++ b/usr/dash/input.c
@@ -147,8 +147,12 @@ retry:
static const char *rl_cp;
static int el_len;
- if (rl_cp == NULL)
+ if (rl_cp == NULL) {
+ struct stackmark smark;
+ pushstackmark(&smark, stackblocksize());
rl_cp = el_gets(el, &el_len);
+ popstackmark(&smark);
+ }
if (rl_cp == NULL)
nr = 0;
else {
2020 Mar 28
0
[klibc:update-dash] dash: input: Fix here-document redirection with vi/emacs on
.../usr/dash/input.c b/usr/dash/input.c
index 06c08d49..e53423c5 100644
--- a/usr/dash/input.c
+++ b/usr/dash/input.c
@@ -147,8 +147,12 @@ retry:
static const char *rl_cp;
static int el_len;
- if (rl_cp == NULL)
+ if (rl_cp == NULL) {
+ struct stackmark smark;
+ pushstackmark(&smark, stackblocksize());
rl_cp = el_gets(el, &el_len);
+ popstackmark(&smark);
+ }
if (rl_cp == NULL)
nr = 0;
else {
2020 Mar 28
0
[klibc:update-dash] dash: parser: Save/restore here-documents in command substitution
...om old file again, ignoring any pushed back
- * tokens left from the backquote parsing
- */
- popfile();
+ /* Start reading from old file again. */
+ popfile();
+ /* Ignore any pushed back tokens left from the backquote parsing. */
+ if (oldstyle)
tokpushback = 0;
- }
while (stackblocksize() <= savelen)
growstackblock();
STARTSTACKSTR(out);
2012 Jul 02
0
[klibc:master] [MEMALLOC] Avoid clang warning about dead store to "size"
...1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/usr/dash/memalloc.c b/usr/dash/memalloc.c
index 9fea067..d8e4413 100644
--- a/usr/dash/memalloc.c
+++ b/usr/dash/memalloc.c
@@ -273,7 +273,7 @@ char *
makestrspace(size_t newlen, char *p)
{
size_t len = p - stacknxt;
- size_t size = stackblocksize();
+ size_t size;
for (;;) {
size_t nleft;