return((offset *) newcore(MAXROM*sizeof(offset)));
}
-sym_p newsym() {
-
- return((sym_p) newcore(sizeof(sym_t)));
+sym_p newsym(len) int len; {
+ /*
+ * sym_t includes a 2 character s_name at the end
+ * extend this structure with len-2 characters
+ */
+ return((sym_p) newcore(sizeof(sym_t) - 2 + len));
}
argb_p newargb() {
sym_p symlookup(name,status,flags) char *name; int status,flags; {
register sym_p *spp,sp;
+ register i;
static short genfrag = 32767;
spp = &symhash[hash(name)%NSYMHASH];
* symbol not found, enter in table
*/
- *spp = sp = newsym();
- strncpy(sp->s_name,name,IDL);
+ i = strlen(name) + 1;
+ if (i & 1)
+ i++;
+ if (i > IDL)
+ i = IDL;
+ *spp = sp = newsym(i);
+ strncpy(sp->s_name,name,i);
sp->s_flags = flags;
if (status == DEFINING)
sp->s_flags |= SYMDEF;