zsh-workers
 help / color / mirror / code / Atom feed
From: Peter Stephenson <p.stephenson@samsung.com>
To: Zsh hackers' list <zsh-workers@zsh.org>
Subject: Warnings in compctl
Date: Wed, 21 Mar 2018 10:16:30 +0000	[thread overview]
Message-ID: <20180321101630.511442a9@camnpupstephen.cam.scsc.local> (raw)
In-Reply-To: <CGME20180321101631eucas1p281904e89d2bc29ef8fa0c3c0aa6b06d6@eucas1p2.samsung.com>

This removes some warnings from gcc 7.3.0.  Technically I think a
pointer off the front is in fact invalid (one off the end is allowed so
long as it isn't dereferenced).

pws


diff --git a/Src/Zle/compctl.c b/Src/Zle/compctl.c
index 5414b8f..e9d1657 100644
--- a/Src/Zle/compctl.c
+++ b/Src/Zle/compctl.c
@@ -383,7 +383,7 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
      * cct is a temporary just to hold flags; it never needs freeing.
      */
     struct compctl cct;
-    char **argv = *av;
+    char **argv = *av, argv_end[2] = "x";
     int ready = 0, hx = 0;
 
     /* Handle `compctl + foo ...' specially:  turn it into
@@ -516,14 +516,14 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
 		    }
 		    if ((*argv)[1]) {
 			p = (*argv) + 1;
-			*argv = "" - 1;
+			*argv = argv_end;
 		    } else if (!argv[1]) {
 			zwarnnam(name, "retry specification expected after -%c",
 				 **argv);
 			return 1;
 		    } else {
 			p = *++argv;
-			*argv = "" - 1;
+			*argv = argv_end;
 		    }
 		    switch (*p) {
 		    case '+':
@@ -553,25 +553,25 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
 	    case 'k':
 		if ((*argv)[1]) {
 		    cct.keyvar = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "variable name expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.keyvar = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'K':
 		if ((*argv)[1]) {
 		    cct.func = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "function name expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.func = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'Y':
@@ -582,74 +582,74 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
 	    expl:
 		if ((*argv)[1]) {
 		    cct.explain = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "string expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.explain = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'y':
 		if ((*argv)[1]) {
 		    cct.ylist = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "function/variable expected after -%c",
 			     **argv);
 		} else {
 		    cct.ylist = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'P':
 		if ((*argv)[1]) {
 		    cct.prefix = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "string expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.prefix = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'S':
 		if ((*argv)[1]) {
 		    cct.suffix = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "string expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.suffix = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'g':
 		if ((*argv)[1]) {
 		    cct.glob = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "glob pattern expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.glob = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 's':
 		if ((*argv)[1]) {
 		    cct.str = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "command string expected after -%c",
 			     **argv);
 		    return 1;
 		} else {
 		    cct.str = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'l':
@@ -658,13 +658,13 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
 		    return 1;
 		} else if ((*argv)[1]) {
 		    cct.subcmd = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "command name expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.subcmd = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'h':
@@ -673,49 +673,49 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
 		    return 1;
 		} else if ((*argv)[1]) {
 		    cct.substr = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "command name expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.substr = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'W':
 		if ((*argv)[1]) {
 		    cct.withd = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "path expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.withd = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'J':
 		if ((*argv)[1]) {
 		    cct.gname = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "group name expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.gname = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'V':
 		if ((*argv)[1]) {
 		    cct.gname = (*argv) + 1;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "group name expected after -%c", **argv);
 		    return 1;
 		} else {
 		    cct.gname = *++argv;
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		cct.mask2 |= CC_NOSORT;
 		break;
@@ -738,7 +738,7 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
 			cct.mstr = NULL;
 			return 1;
 		    }
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		} else if (!argv[1]) {
 		    zwarnnam(name, "matching specification expected after -%c",
 			     **argv);
@@ -751,7 +751,7 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
 			cct.mstr = NULL;
 			return 1;
 		    }
-		    *argv = "" - 1;
+		    *argv = argv_end;
 		}
 		break;
 	    case 'H':
@@ -772,7 +772,7 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
 		    cct.hnum = 0;
 		if (*cct.hpat == '*' && !cct.hpat[1])
 		    cct.hpat = "";
-		*argv = "" - 1;
+		*argv = argv_end;
 		break;
 	    case 'C':
 		if (cl) {


       reply	other threads:[~2018-03-21 10:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20180321101631eucas1p281904e89d2bc29ef8fa0c3c0aa6b06d6@eucas1p2.samsung.com>
2018-03-21 10:16 ` Peter Stephenson [this message]
2018-03-23  3:38   ` Jun T
2018-03-23  9:32     ` Peter Stephenson
2018-05-12 10:29     ` Oliver Kiddle
2018-05-12 12:57   ` Eitan Adler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180321101630.511442a9@camnpupstephen.cam.scsc.local \
    --to=p.stephenson@samsung.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).