* read.c (get_next_mword): [SV 49865] Make fallthrough explicit.

This commit is contained in:
Paul Smith 2016-12-18 13:49:14 -05:00
parent 72af7ce8af
commit 80861cce43

54
read.c
View File

@ -2629,7 +2629,7 @@ readline (struct ebuffer *ebuf)
static enum make_word_type
get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
{
enum make_word_type wtype = w_bogus;
enum make_word_type wtype;
char *p = buffer, *beg;
char c;
@ -2639,41 +2639,42 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
beg = p;
c = *(p++);
/* Look at the start of the word to see if it's simple. */
switch (c)
{
case '\0':
wtype = w_eol;
break;
goto done;
case ';':
wtype = w_semicolon;
break;
goto done;
case '=':
wtype = w_varassign;
break;
goto done;
case ':':
wtype = w_colon;
switch (*p)
if (*p == '=')
{
case ':':
++p;
if (p[1] != '=')
wtype = w_dcolon;
wtype = w_varassign; /* := */
}
else if (*p == ':')
{
++p;
if (p[1] == '=')
{
++p;
wtype = w_varassign; /* ::= */
}
else
{
wtype = w_varassign;
++p;
wtype = w_dcolon;
}
break;
case '=':
++p;
wtype = w_varassign;
break;
}
break;
else
wtype = w_colon;
goto done;
case '+':
case '?':
@ -2681,19 +2682,18 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
if (*p == '=')
{
++p;
wtype = w_varassign;
break;
wtype = w_varassign; /* += or ?= or != */
goto done;
}
/* FALLTHROUGH */
default:
if (delim && strchr (delim, c))
{
wtype = w_static;
break;
}
/* Did we find something? If so, return now. */
if (wtype != w_bogus)
goto done;
}
}
/* This is some non-operator word. A word consists of the longest
string of characters that doesn't contain whitespace, one of [:=#],