Title says it all. It found some other "bugs", but they're harder to
verify (and some of them don't look right at first look).

diff --git a/c_ksh.c b/c_ksh.c
index e653975..1cdf150 100644
--- a/c_ksh.c
+++ b/c_ksh.c
@@ -534,7 +534,7 @@ c_command(char **wp)
 int
 c_typeset(char **wp)
 {
-       struct block *l = e->loc;
+       struct block *l;
        struct tbl *vp, **p;
        Tflag fset = 0, fclr = 0;
        int thing = 0, func = 0, local = 0;
diff --git a/emacs.c b/emacs.c
index 3b2d083..17145d5 100644
--- a/emacs.c
+++ b/emacs.c
@@ -1021,7 +1021,6 @@ x_redraw(int limit)
                x_displen = xx_cols - 2;
        }
        xlp_valid = false;
-       cp = x_lastcp();
        x_zots(xbp);
        if (xbp != xbuf || xep > xlp)
                limit = xx_cols;
diff --git a/eval.c b/eval.c
index 1918751..303a953 100644
--- a/eval.c
+++ b/eval.c
@@ -709,17 +709,14 @@ varsub(Expand *xp, char *sp, char *word,
                /* Check for size of array */
                if ((p=strchr(sp,'[')) && (p[1]=='*'||p[1]=='@') && p[2]==']') {
                        int n = 0;
-                       int max = 0;
 
                        vp = global(arrayname(sp));
                        if (vp->flag & (ISSET|ARRAY))
                                zero_ok = 1;
                        for (; vp; vp = vp->u.array)
-                               if (vp->flag & ISSET) {
-                                       max = vp->index + 1;
+                               if (vp->flag & ISSET)
                                        n++;
-                               }
-                       c = n; /* ksh88/ksh93 go for number, not max index */
+                       c = n;
                } else if (c == '*' || c == '@')
                        c = e->loc->argc;
                else {
diff --git a/io.c b/io.c
index ea2925c..0fb2f41 100644
--- a/io.c
+++ b/io.c
@@ -295,7 +295,7 @@ check_fd(char *name, int mode, const char **emsgp)
 
        if (isdigit(name[0]) && !name[1]) {
                fd = name[0] - '0';
-               if ((fl = fcntl(fd = name[0] - '0', F_GETFL, 0)) < 0) {
+               if ((fl = fcntl(fd, F_GETFL, 0)) < 0) {
                        if (emsgp)
                                *emsgp = "bad file descriptor";
                        return -1;
diff --git a/var.c b/var.c
index 77d3969..d3a0554 100644
--- a/var.c
+++ b/var.c
@@ -830,7 +830,7 @@ is_wdvarassign(const char *s)
 char **
 makenv(void)
 {
-       struct block *l = e->loc;
+       struct block *l;
        XPtrV env;
        struct tbl *vp, **vpp;
        int i;

-- 
Alexander Polakov | plhk.ru

Reply via email to