#define get8() getc(emfile)
-#define MAXSTR 256
-
FILE *emfile;
extern FILE *codefile;
extern FILE *freopen();
int offtyp;
long argval;
int dlbval;
-char str[MAXSTR],argstr[128],labstr[128];
+char *str,argstr[128],labstr[128];
+unsigned int maxstrsiz;
int strsiz;
int holno=0;
int procno=0;
string holstr();
string strarg();
string mystrcpy();
+string myalloc();
long get32();
in_init(filename) char *filename; {
error("Can't open %s",filename);
if (get16()!=sp_magic)
error("Bad format %s",filename ? filename : "standard-input");
+ str = myalloc(maxstrsiz=256);
}
in_start() {
register n;
getarg(cst_ptyp);
- if (argval < 0 || argval > MAXSTR-1)
+ if (argval < 0)
fatal("string/identifier too long");
+ if (argval >= maxstrsiz) {
+ myfree(str);
+ str = myalloc((unsigned) argval + 1);
+ maxstrsiz = argval + 1;
+ }
strsiz = n = (int) argval;
p = str;
while (--n >= 0)