Hello,
The macro flex_die(), defined in flexdef.h, never returns.
Instead it does FLEX_EXIT() which longjmp()s back to flex_main()
before exiting.
The following patch removes some dead code, as statements
after flex_die() are never reached. Does this look OK?
- Michael
Index: tables.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/tables.c,v
retrieving revision 1.4
diff -u -p -u -r1.4 tables.c
--- tables.c 17 Aug 2017 19:27:09 -0000 1.4
+++ tables.c 30 Oct 2019 12:32:59 -0000
@@ -221,34 +221,26 @@ int yytbl_data_fwrite (struct yytbl_writ
default:
flex_die (_("invalid td_flags detected"));
}
- if (rv < 0) {
+ if (rv < 0)
flex_die (_("error while writing tables"));
- return -1;
- }
bwritten += rv;
}
/* Sanity check */
- if (bwritten != (int) (12 + total_len * YYTDFLAGS2BYTES
(td->td_flags))) {
+ if (bwritten != (int) (12 + total_len * YYTDFLAGS2BYTES (td->td_flags)))
flex_die (_("insanity detected"));
- return -1;
- }
/* add padding */
- if ((rv = yytbl_write_pad64 (wr)) < 0) {
+ if ((rv = yytbl_write_pad64 (wr)) < 0)
flex_die (_("pad64 failed"));
- return -1;
- }
bwritten += rv;
/* Now go back and update the th_hsize member */
if (fgetpos (wr->out, &pos) != 0
|| fsetpos (wr->out, &(wr->th_ssize_pos)) != 0
|| yytbl_write32 (wr, wr->total_written) < 0
- || fsetpos (wr->out, &pos)) {
+ || fsetpos (wr->out, &pos))
flex_die (_("get|set|fwrite32 failed"));
- return -1;
- }
else
/* Don't count the int we just wrote. */
wr->total_written -= sizeof (flex_int32_t);
@@ -346,7 +338,6 @@ static flex_int32_t yytbl_data_geti (con
return ((flex_int32_t *) (tbl->td_data))[i];
default:
flex_die (_("invalid td_flags detected"));
- break;
}
return 0;
}
@@ -374,7 +365,6 @@ static void yytbl_data_seti (const struc
break;
default:
flex_die (_("invalid td_flags detected"));
- break;
}
}
@@ -433,10 +423,8 @@ void yytbl_data_compress (struct yytbl_d
/* No change in this table needed. */
return;
- if (newsz > (int) YYTDFLAGS2BYTES (tbl->td_flags)) {
+ if (newsz > (int) YYTDFLAGS2BYTES (tbl->td_flags))
flex_die (_("detected negative compression"));
- return;
- }
total_len = yytbl_calc_total_len (tbl);
newtbl.td_data = calloc (total_len, newsz);