]> git.localhorst.tv Git - l2e.git/blobdiff - src/loader/Compiler.cpp
support for arrays containing (yet) undefined references
[l2e.git] / src / loader / Compiler.cpp
index 96c0cc1425b643a8068a7b5ff6c8e2ff3697069e..b2d23be9c5cb984ee969ae3402706fbe02cf6289 100644 (file)
@@ -194,6 +194,7 @@ void Compiler::PrepareExternal(
                const Interpreter::PostponedDefinition &def) {
        ext.nameOffset = addressMap[def.identifier.c_str()];
        ext.referenceOffset = addressMap[def.object] + (def.dest - def.object);
+       ext.typeId = def.type;
        ext.inlined = 0;
        if (def.inlined) ext.inlined |= 1;
        if (def.aggregate) ext.inlined |= 2;
@@ -258,6 +259,9 @@ void Compiler::RelocateArray(char *array, int size) {
        for (char *i = array, *end = array + size;
                        i < end; i += sizeof(void *)) {
                char **dest = reinterpret_cast<char **>(i);
+               if (!*dest) {
+                       continue;
+               }
                map<const void *, unsigned int>::const_iterator
                                entry(addressMap.find(*dest));
                if (entry == addressMap.end()) {