Some recent fixes from asmjit.
Some recent fixes from asmjit.

--- a/src/in_2sf/desmume/utils/AsmJit/base/error.cpp
+++ b/src/in_2sf/desmume/utils/AsmJit/base/error.cpp
@@ -64,7 +64,9 @@
   while (i < id) {
     while (p[0])
       p++;
+
     p++;
+    i++;
   }
 
   return p;

--- a/src/in_2sf/desmume/utils/AsmJit/build.h
+++ b/src/in_2sf/desmume/utils/AsmJit/build.h
@@ -236,7 +236,7 @@
 
 //! Cross-platform solution to get offset of `_Field_` in `_Struct_`.
 #define ASMJIT_OFFSET_OF(_Struct_, _Field_) \
-  (reinterpret_cast<size_t>(reinterpret_cast<const uint8_t*>(&reinterpret_cast<const _Struct_*>(0x1)->_Field_)) - 1)
+  (reinterpret_cast<intptr_t>(reinterpret_cast<const uint8_t*>(&reinterpret_cast<const _Struct_*>(0x1)->_Field_)) - 1)
 
 // ============================================================================
 // [asmjit::build - ASMJIT_ARRAY_SIZE]

--- a/src/in_2sf/desmume/utils/AsmJit/x86/x86assembler.cpp
+++ b/src/in_2sf/desmume/utils/AsmJit/x86/x86assembler.cpp
@@ -316,21 +316,21 @@
   uint8_t* cursor = getCursor();
 
   LabelData* label = getLabelData(op.getId());
-  RelocData reloc;
+  RelocData rd;
 
 #ifndef ASMJIT_DISABLE_LOGGER
   if (_logger)
     _logger->logFormat(kLoggerStyleData, regSize == 4 ? ".dd L%u\n" : ".dq L%u\n", op.getId());
 #endif // !ASMJIT_DISABLE_LOGGER
 
-  reloc.type = kRelocRelToAbs;
-  reloc.size = regSize;
-  reloc.from = static_cast<Ptr>(getOffset());
-  reloc.data = 0;
+  rd.type = kRelocRelToAbs;
+  rd.size = regSize;
+  rd.from = static_cast<Ptr>(getOffset());
+  rd.data = 0;
 
   if (label->offset != -1) {
     // Bound label.
-    reloc.data = static_cast<Ptr>(static_cast<SignedPtr>(label->offset));
+    rd.data = static_cast<Ptr>(static_cast<SignedPtr>(label->offset));
   }
   else {
     // Non-bound label. Need to chain.
@@ -344,7 +344,7 @@
     label->links = link;
   }
 
-  if (_relocList.append(reloc) != kErrorOk)
+  if (_relocList.append(rd) != kErrorOk)
     return setError(kErrorNoHeapMemory);
 
   // Emit dummy intptr_t (4 or 8 bytes; depends on the address size).
@@ -495,22 +495,22 @@
 
   // Relocate all recorded locations.
   size_t relocCount = _relocList.getLength();
-  const RelocData* relocData = _relocList.getData();
+  const RelocData* rdList = _relocList.getData();
 
   for (size_t i = 0; i < relocCount; i++) {
-    const RelocData& r = relocData[i];
+    const RelocData& rd = rdList[i];
 
     // Make sure that the `RelocData` is correct.
-    Ptr ptr = r.data;
-
-    size_t offset = static_cast<size_t>(r.from);
-    ASMJIT_ASSERT(offset + r.size <= static_cast<Ptr>(maxCodeSize));
+    Ptr ptr = rd.data;
+
+    size_t offset = static_cast<size_t>(rd.from);
+    ASMJIT_ASSERT(offset + rd.size <= static_cast<Ptr>(maxCodeSize));
 
     // Whether to use trampoline, can be only used if relocation type is
     // kRelocAbsToRel on 64-bit.
     bool useTrampoline = false;
 
-    switch (r.type) {
+    switch (rd.type) {
       case kRelocAbsToAbs:
         break;
 
@@ -519,13 +519,13 @@
         break;
 
       case kRelocAbsToRel:
-        ptr -= baseAddress + r.from + 4;
+        ptr -= baseAddress + rd.from + 4;
         break;
 
       case kRelocTrampoline:
-        ptr -= baseAddress + r.from + 4;
+        ptr -= baseAddress + rd.from + 4;
         if (!IntUtil::isInt32(static_cast<SignedPtr>(ptr))) {
-          ptr = reinterpret_cast<Ptr>(tramp) - (baseAddress + r.from + 4);
+          ptr = reinterpret_cast<Ptr>(tramp) - (baseAddress + rd.from + 4);
           useTrampoline = true;
         }
         break;
@@ -534,7 +534,7 @@
         ASMJIT_ASSERT(!"Reached");
     }
 
-    switch (r.size) {
+    switch (rd.size) {
       case 8:
         *reinterpret_cast<int64_t*>(dst + offset) = static_cast<int64_t>(ptr);
         break;
@@ -566,14 +566,14 @@
       dst[offset - 1] = byte1;
 
       // Absolute address.
-      reinterpret_cast<uint64_t*>(tramp)[0] = static_cast<uint64_t>(r.data);
+      reinterpret_cast<uint64_t*>(tramp)[0] = static_cast<uint64_t>(rd.data);
 
       // Advance trampoline pointer.
       tramp += 8;
 
 #ifndef ASMJIT_DISABLE_LOGGER
       if (logger)
-        logger->logFormat(kLoggerStyleComment, "; Trampoline %llX\n", r.data);
+        logger->logFormat(kLoggerStyleComment, "; Trampoline %llX\n", rd.data);
 #endif // !ASMJIT_DISABLE_LOGGER
     }
   }
@@ -3655,18 +3655,20 @@
       label = self->getLabelData(rmMem->_vmem.base);
       relocId = self->_relocList.getLength();
 
-      RelocData reloc;
-      reloc.type = kRelocRelToAbs;
-      reloc.size = 4;
-      reloc.from = static_cast<Ptr>(static_cast<uintptr_t>(cursor - self->_buffer));
-      reloc.data = static_cast<SignedPtr>(dispOffset);
-
-      if (self->_relocList.append(reloc) != kErrorOk)
-        return self->setError(kErrorNoHeapMemory);
+      {
+        RelocData rd;
+        rd.type = kRelocRelToAbs;
+        rd.size = 4;
+        rd.from = static_cast<Ptr>(static_cast<uintptr_t>(cursor - self->_buffer));
+        rd.data = static_cast<SignedPtr>(dispOffset);
+
+        if (self->_relocList.append(rd) != kErrorOk)
+          return self->setError(kErrorNoHeapMemory);
+      }
 
       if (label->offset != -1) {
         // Bound label.
-        reloc.data += static_cast<SignedPtr>(label->offset);
+        self->_relocList[relocId].data += static_cast<SignedPtr>(label->offset);
         EMIT_DWORD(0);
       }
       else {
@@ -3925,18 +3927,20 @@
       label = self->getLabelData(rmMem->_vmem.base);
       relocId = self->_relocList.getLength();
 
-      RelocData reloc;
-      reloc.type = kRelocRelToAbs;
-      reloc.size = 4;
-      reloc.from = static_cast<Ptr>(static_cast<uintptr_t>(cursor - self->_buffer));
-      reloc.data = static_cast<SignedPtr>(dispOffset);
-
-      if (self->_relocList.append(reloc) != kErrorOk)
-        return self->setError(kErrorNoHeapMemory);
+      {
+        RelocData rd;
+        rd.type = kRelocRelToAbs;
+        rd.size = 4;
+        rd.from = static_cast<Ptr>(static_cast<uintptr_t>(cursor - self->_buffer));
+        rd.data = static_cast<SignedPtr>(dispOffset);
+
+        if (self->_relocList.append(rd) != kErrorOk)
+          return self->setError(kErrorNoHeapMemory);
+      }
 
       if (label->offset != -1) {
         // Bound label.
-        reloc.data += static_cast<SignedPtr>(label->offset);
+        self->_relocList[relocId].data += static_cast<SignedPtr>(label->offset);
         EMIT_DWORD(0);
       }
       else {