If the compile failed, return NULL from symbol lookups.
diff --git a/libacc/acc.cpp b/libacc/acc.cpp
index c527a96..7da744a 100644
--- a/libacc/acc.cpp
+++ b/libacc/acc.cpp
@@ -9,7 +9,6 @@
*/
#include <ctype.h>
-#include <dlfcn.h>
#include <errno.h>
#include <stdarg.h>
#include <stdint.h>
@@ -3266,6 +3265,7 @@
String mPragmas;
int mPragmaStringCount;
+ int mCompileResult;
static const int ALLOC_SIZE = 99999;
@@ -3974,7 +3974,7 @@
int argCount = 0;
while (tok != ')' && tok != EOF) {
if (! varArgs && !pArgList) {
- error ("Unexpected argument.");
+ error("Unexpected argument.");
}
expr();
Type* pTargetType;
@@ -4002,7 +4002,7 @@
argCount += 1;
}
if (! varArgs && pArgList) {
- error ("Expected more argument(s). Saw %d", argCount);
+ error("Expected more argument(s). Saw %d", argCount);
}
pGen->endFunctionCallArguments(pDecl, a, l);
skip(')');
@@ -4685,6 +4685,7 @@
pGlobalBase = 0;
pGen = 0;
mPragmaStringCount = 0;
+ mCompileResult = 0;
}
void setArchitecture(const char* architecture) {
@@ -4780,6 +4781,7 @@
result = -2;
}
}
+ mCompileResult = result;
return result;
}
@@ -4827,10 +4829,12 @@
* If found, return its value.
*/
void* lookup(const char* name) {
- tokenid_t tok = mTokenTable.intern(name, strlen(name));
- VariableInfo* pVariableInfo = VI(tok);
- if (pVariableInfo) {
- return pVariableInfo->pAddress;
+ if (mCompileResult == 0) {
+ tokenid_t tok = mTokenTable.intern(name, strlen(name));
+ VariableInfo* pVariableInfo = VI(tok);
+ if (pVariableInfo) {
+ return pVariableInfo->pAddress;
+ }
}
return NULL;
}