summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Kiddle <okiddle@yahoo.co.uk>2019-05-20 00:14:01 +0200
committerOliver Kiddle <okiddle@yahoo.co.uk>2019-05-20 00:14:01 +0200
commit3de2333b0821a1aaeb3ef98046212b5bf22b596c (patch)
treef478c8717660f288a32e883d8da268c23cc5434f
parent09917e558b2333811b09674265c57eeb92d487e9 (diff)
downloadzsh-3de2333b0821a1aaeb3ef98046212b5bf22b596c.tar.gz
zsh-3de2333b0821a1aaeb3ef98046212b5bf22b596c.zip
44307: allow for atoi() returning a negative number
-rw-r--r--ChangeLog3
-rw-r--r--Src/exec.c2
-rw-r--r--Src/init.c5
-rw-r--r--Src/params.c6
-rw-r--r--Src/utils.c2
5 files changed, 12 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 316c6b484..c67d53356 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2019-05-20 Oliver Kiddle <okiddle@yahoo.co.uk>
+ * 44307: Src/exec.c, Src/init.c, Src/params.c, Src/utils.c:
+ allow for atoi() returning a negative number
+
* 44308: Completion/Linux/Command/_modutils: update Linux
modutils completion
diff --git a/Src/exec.c b/Src/exec.c
index 6ac852112..60ab0acf8 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -2535,7 +2535,7 @@ setunderscore(char *str)
{
queue_signals();
if (str && *str) {
- int l = strlen(str) + 1, nl = (l + 31) & ~31;
+ size_t l = strlen(str) + 1, nl = (l + 31) & ~31;
if (nl > underscorelen || (underscorelen - nl) > 64) {
zfree(zunderscore, underscorelen);
diff --git a/Src/init.c b/Src/init.c
index 2d5c3296d..445cd3937 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -45,7 +45,10 @@ int noexitct = 0;
char *zunderscore;
/**/
-int underscorelen, underscoreused;
+size_t underscorelen;
+
+/**/
+int underscoreused;
/* what level of sourcing we are at */
diff --git a/Src/params.c b/Src/params.c
index df031ab64..1859c7c12 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -2201,10 +2201,10 @@ getstrvalue(Value v)
if (v->flags & VALFLAG_SUBST) {
if (v->pm->node.flags & (PM_LEFT|PM_RIGHT_B|PM_RIGHT_Z)) {
- unsigned int fwidth = v->pm->width ? v->pm->width : MB_METASTRLEN(s);
+ size_t fwidth = v->pm->width ? (unsigned int)v->pm->width : MB_METASTRLEN(s);
switch (v->pm->node.flags & (PM_LEFT | PM_RIGHT_B | PM_RIGHT_Z)) {
char *t, *tend;
- unsigned int t0;
+ size_t t0;
case PM_LEFT:
case PM_LEFT | PM_RIGHT_Z:
@@ -5858,7 +5858,7 @@ printparamnode(HashNode hn, int printflags)
doneminus = 0;
}
if ((pmptr->flags & PMTF_USE_WIDTH) && p->width) {
- printf("%d ", p->width);
+ printf("%u ", p->width);
doneminus = 0;
}
}
diff --git a/Src/utils.c b/Src/utils.c
index 32f600858..46cf7bcf6 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -3336,7 +3336,7 @@ morefmt:
case '.':
{
long fnsec = nsec;
- if (digs > 9)
+ if (digs < 0 || digs > 9)
digs = 9;
if (ztrftimebuf(&bufsize, digs))
return -1;