summary refs log tree commit diff
path: root/Src
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 /Src
parent09917e558b2333811b09674265c57eeb92d487e9 (diff)
downloadzsh-3de2333b0821a1aaeb3ef98046212b5bf22b596c.tar.gz
zsh-3de2333b0821a1aaeb3ef98046212b5bf22b596c.tar.xz
zsh-3de2333b0821a1aaeb3ef98046212b5bf22b596c.zip
44307: allow for atoi() returning a negative number
Diffstat (limited to 'Src')
-rw-r--r--Src/exec.c2
-rw-r--r--Src/init.c5
-rw-r--r--Src/params.c6
-rw-r--r--Src/utils.c2
4 files changed, 9 insertions, 6 deletions
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;