/* symbol name is internal name */
if (!sym->level) /* local statics can come here */
- sprintf (sym->rname, "%s%s", port->fun_prefix, sym->name);
+ SNPRINTF (sym->rname, sizeof(sym->rname),
+ "%s%s", port->fun_prefix, sym->name);
/* add it to the operandKey reset */
addSet (&operKeyReset, sym);
SPEC_OCLS (sym->etype) = code;
/* if this is an interrupt service routine
then put it in the interrupt service array */
- if (FUNC_ISISR (sym->type))
+ if (FUNC_ISISR (sym->type) && !options.noiv)
{
if (interrupts[FUNC_INTNO (sym->type)])
else
{ /* allocate them in the automatic space */
/* generate a unique name */
- sprintf (lval->sym->rname, "%s%s_PARM_%d", port->fun_prefix, currFunc->name, pNum);
- strcpy (lval->name, lval->sym->rname);
+ SNPRINTF (lval->sym->rname, sizeof(lval->sym->rname),
+ "%s%s_PARM_%d", port->fun_prefix, currFunc->name, pNum);
+ strncpyz (lval->name, lval->sym->rname, sizeof(lval->name));
/* if declared in external storage */
if (SPEC_SCLS (lval->etype) == S_XDATA)
if (lval->sym->rname[0])
{
char buffer[SDCC_NAME_MAX];
- strcpy (buffer, lval->sym->rname);
+ strncpyz (buffer, lval->sym->rname, sizeof(buffer));
lval->sym = copySymbol (lval->sym);
- strcpy (lval->sym->rname, buffer);
- strcpy (lval->name, strcpy (lval->sym->name, lval->sym->rname));
+ strncpyz (lval->sym->rname, buffer, sizeof(lval->sym->rname));
+ strncpyz (lval->sym->name, buffer, sizeof(lval->sym->name));
+ strncpyz (lval->name, buffer, sizeof(lval->name));
addSym (SymbolTab, lval->sym, lval->sym->name,
lval->sym->level, lval->sym->block, 1);
lval->sym->_isparm = 1;
{
/* generate an unique name */
- sprintf (sym->rname, "%s%s_%s_%d_%d",
- port->fun_prefix,
- currFunc->name, sym->name, sym->level, sym->block);
+ SNPRINTF (sym->rname, sizeof(sym->rname),
+ "%s%s_%s_%d_%d",
+ port->fun_prefix,
+ currFunc->name, sym->name, sym->level, sym->block);
sym->islocal = 1;
sym->localof = currFunc;
/* if register bank specified then update maxRegBank */
if (maxRegBank < FUNC_REGBANK (csym->type))
maxRegBank = FUNC_REGBANK (csym->type);
+ /*JCF: Mark the register bank as used*/
+ RegBankUsed[FUNC_REGBANK(csym->type)]=1;
}
/* if this is a extern variable then change the */