1
0
mirror of https://github.com/cc65/cc65.git synced 2025-08-15 06:27:36 +00:00

Fixed a bug

git-svn-id: svn://svn.cc65.org/cc65/trunk@1565 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz
2002-11-21 23:28:32 +00:00
parent fc714f33c2
commit 4f9f06c20a

View File

@@ -360,21 +360,6 @@ static SymEntry* SymFindAny (SymTable* Tab, const char* Name)
static SymEntry* SymRefInternal (SymTable* Table, const char* Name)
/* Search for the symbol in the given table and return it */
{
/* Try to find the symbol, create a new one if the symbol does not exist */
SymEntry* S = SymFind (Table, Name, SF_ALLOC_NEW);
/* Mark the symbol as referenced */
S->Flags |= SF_REFERENCED;
/* Return it */
return S;
}
void SymEnterLevel (void)
/* Enter a new lexical level */
{
@@ -454,8 +439,19 @@ void SymDef (const char* Name, ExprNode* Expr, int ZP, int Label)
SymEntry* SymRef (const char* Name)
/* Search for the symbol and return it */
{
/* Reference the symbol in the current table */
return SymRefInternal (SymTab, Name);
/* Try to find the symbol in any visible table */
SymEntry* S = SymFindAny (SymTab, Name);
/* If we could not find the symbol, create it in the local symtab */
if (S == 0) {
S = SymFind (SymTab, Name, SF_ALLOC_NEW);
}
/* Mark the symbol as referenced */
S->Flags |= SF_REFERENCED;
/* Return it */
return S;
}
@@ -463,8 +459,14 @@ SymEntry* SymRef (const char* Name)
SymEntry* SymRefGlobal (const char* Name)
/* Search for the symbol in the global namespace and return it */
{
/* Reference the symbol in the current table */
return SymRefInternal (RootTab, Name);
/* Try to find the symbol, create a new one if the symbol does not exist */
SymEntry* S = SymFind (RootTab, Name, SF_ALLOC_NEW);
/* Mark the symbol as referenced */
S->Flags |= SF_REFERENCED;
/* Return it */
return S;
}