Update the fix

This commit is contained in:
VVWVV 2017-03-12 10:28:28 +03:00
parent 6124e5e662
commit ba64ad437e
3 changed files with 4 additions and 6 deletions

View File

@ -145,6 +145,7 @@ typedef struct s_symbol {
struct s_symbol **refer; /* referrer list, functions that "use" this symbol */
int numrefers; /* number of entries in the referrer list */
char *documentation; /* optional documentation string */
int func_skipped;
} symbol;

View File

@ -3569,9 +3569,11 @@ static int newfunc(char *firstname,int firsttag,int fpublic,int fstatic,int stoc
/* so it is not a prototype, proceed */
/* if this is a function that is not referred to (this can only be detected
* in the second stage), shut code generation off */
sym->func_skipped=FALSE;
if (sc_status==statWRITE && (sym->usage & uREAD)==0 && !fpublic) {
sc_status=statSKIP;
cidx=code_idx;
sym->func_skipped=TRUE;
glbdecl=glb_declared;
} /* if */
if ((sym->flags & flgDEPRECATED)!=0) {

View File

@ -1335,12 +1335,7 @@ static int command(void)
/* mark function as "used" */
/* do NOT mark it as written as that has a different meaning for
* functions (marks them as "should return a value") */
/* compute the number of references on the function */
for (count=0; count<curfunc->numrefers && curfunc->refer[count]; count++)
/* nothing */;
/* if there's references on the function or/and this function was declared as public */
if (count!=0 || (curfunc->usage & uPUBLIC)!=0)
if (!curfunc->func_skipped)
markusage(sym,uREAD);
} else {
outval(sym->addr,FALSE);