From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16369 invoked by alias); 23 Mar 2018 04:16:38 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 42501 Received: (qmail 23608 invoked by uid 1010); 23 Mar 2018 04:16:37 -0000 X-Qmail-Scanner-Diagnostics: from rcpt-mqugw.biglobe.ne.jp by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(133.208.100.1):SA:0(-2.6/5.0):. Processed in 12.237971 secs); 23 Mar 2018 04:16:37 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: takimoto-j@kba.biglobe.ne.jp X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | X-Biglobe-Sender: From: Jun T Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: Re: Warnings in compctl Date: Fri, 23 Mar 2018 12:38:43 +0900 References: <20180321101630.511442a9@camnpupstephen.cam.scsc.local> To: zsh-workers@zsh.org In-Reply-To: <20180321101630.511442a9@camnpupstephen.cam.scsc.local> Message-Id: <46F08EE7-DA1F-49E5-8E74-4D519E47ACBD@kba.biglobe.ne.jp> X-Mailer: Apple Mail (2.3273) X-Biglobe-Spnum: 54942 > 2018/03/21 19:16, Peter Stephenson wrote: >=20 > This removes some warnings from gcc 7.3.0. Technically I think a > pointer off the front is in fact invalid=20 Which option did you used with gcc? Three more files (complete.c, computil.c, zle_thingy.c) have the same "off the front" pointer assignments; these are detected by "clang -Warray-bounds-pointer-arithmetic". diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c index 16f48c958..313dcb92f 100644 --- a/Src/Zle/complete.c +++ b/Src/Zle/complete.c @@ -715,11 +715,10 @@ bin_compadd(char *name, char **argv, = UNUSED(Options ops), UNUSED(int func)) case 'E': if (p[1]) { dat.dummies =3D atoi(p + 1); - p =3D "" - 1; + p +=3D strlen(p+1); } else if (argv[1]) { argv++; dat.dummies =3D atoi(*argv); - p =3D "" - 1; } else { zwarnnam(name, "number expected after -%c", *p); zsfree(mstr); @@ -744,13 +743,12 @@ bin_compadd(char *name, char **argv, = UNUSED(Options ops), UNUSED(int func)) /* Pasted argument: -Xfoo. */ if (!*sp) *sp =3D p + 1; - p =3D "" - 1; + p +=3D strlen(p+1); } else if (argv[1]) { /* Argument in a separate word: -X foo. */ argv++; if (!*sp) *sp =3D *argv; - p =3D "" - 1; } else { /* Missing argument: argv[N] =3D=3D "-X", argv[N+1] = =3D=3D NULL. */ zwarnnam(name, e, *p); diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c index 0b1ba58dc..4ce8eeee5 100644 --- a/Src/Zle/computil.c +++ b/Src/Zle/computil.c @@ -1222,7 +1222,7 @@ parse_cadef(char *nam, char **args) else if (*p =3D=3D 'A') { if (p[1]) { nonarg =3D p + 1; - p =3D "" - 1; + p +=3D strlen(p+1); } else if (args[1]) nonarg =3D *++args; else @@ -1230,7 +1230,7 @@ parse_cadef(char *nam, char **args) } else if (*p =3D=3D 'M') { if (p[1]) { match =3D p + 1; - p =3D "" - 1; + p +=3D strlen(p+1); } else if (args[1]) match =3D *++args; else diff --git a/Src/Zle/zle_thingy.c b/Src/Zle/zle_thingy.c index f7e9829c2..5601c1178 100644 --- a/Src/Zle/zle_thingy.c +++ b/Src/Zle/zle_thingy.c @@ -731,6 +731,7 @@ bin_zle_call(char *name, char **args, UNUSED(Options = ops), UNUSED(char func)) break; } while (*++(*args)) { + char skip_this_arg[2] =3D "x"; switch (**args) { case 'n': num =3D args[0][1] ? args[0]+1 : args[1]; @@ -741,7 +742,7 @@ bin_zle_call(char *name, char **args, UNUSED(Options = ops), UNUSED(char func)) return 1; } if (!args[0][1]) - *++args =3D "" - 1; + *++args =3D skip_this_arg; saveflag =3D 1; zmod.mult =3D atoi(num); zmod.flags |=3D MOD_MULT; @@ -760,7 +761,7 @@ bin_zle_call(char *name, char **args, UNUSED(Options = ops), UNUSED(char func)) return 1; } if (!args[0][1]) - *++args =3D "" - 1; + *++args =3D skip_this_arg; keymap_restore =3D dupstring(curkeymapname); if (selectkeymap(keymap_tmp, 0)) { if (remetafy)