ref: cb78d07d358dd55df2a7a54e03bad3e1ab2b9848
parent: 60965920e172133f0313482b7397435d2a8bd3a5
author: Ali Gholami Rudi <ali@rudi.ir>
date: Tue Apr 14 18:24:45 EDT 2015
map: print an error message when NREGS is reached Reported by Dirk-Wilhelm Peters <peters@schwertfisch.de>.
--- a/map.c
+++ b/map.c
@@ -20,6 +20,8 @@
if (i < 0) {
dict_put(mapdict, s, 0);
i = dict_idx(mapdict, s);
+ if (MAPBEG + i >= NREGS)
+ errdie("neatroff: increase NREGS\n");
}
return MAPBEG + i;
}
--- a/roff.h
+++ b/roff.h
@@ -30,6 +30,7 @@
#define NMLEN 32 /* macro/register/environment/glyph name length */
#define GNLEN NMLEN /* glyph name length */
#define RNLEN NMLEN /* register/macro name */
+#define NREGS 8192 /* number of mapped names */
#define ILNLEN 1000 /* line limit of input files */
#define LNLEN 4000 /* line buffer length (ren.c/out.c) */
#define NWORDS 1024 /* number of queued words in formatting buffer */
@@ -414,7 +415,6 @@
#define TR_POPREN "\07P" /* exit render_rec() */
/* mapping register, macro and environment names to indices */
-#define NREGS 4096 /* maximum number of mapped names */
#define DOTMAP(c2) (c2) /* optimized mapping for ".x" names */
int map(char *s); /* map name s to an index */