diff --git a/modules/generator/src/main/kotlin/org/lwjgl/generator/Structs.kt b/modules/generator/src/main/kotlin/org/lwjgl/generator/Structs.kt index 86253d6e23..a53dc8c4c4 100644 --- a/modules/generator/src/main/kotlin/org/lwjgl/generator/Structs.kt +++ b/modules/generator/src/main/kotlin/org/lwjgl/generator/Structs.kt @@ -468,7 +468,18 @@ class Struct( val validations = ArrayList() fun MutableList.addPointer(m: StructMember) = this.add("$t${t}long ${m.name} = memGetAddress($STRUCT + $className.${m.offsetField});") - fun MutableList.addCount(m: StructMember) = this.add("$t$t${m.nativeType.javaMethodType} ${m.name} = n${m.name}($STRUCT);") + fun MutableList.addCount(m: StructMember) { + val validation = "$t$t${m.nativeType.javaMethodType} ${m.name} = n${m.name}($STRUCT);" + if (!this.isEmpty()) { + for (i in 0 until this.size) { + if (this[i].contains(m.name)) { + this.add(i, validation) + return + } + } + } + this.add(validation) + } fun validate(m: StructMember, indent: String, hasPointer: Boolean = false): String { return if (m.nativeType.hasStructValidation) { diff --git a/modules/lwjgl/core/src/main/java/org/lwjgl/system/Struct.java b/modules/lwjgl/core/src/main/java/org/lwjgl/system/Struct.java index 2ff9be2831..598f10aec1 100644 --- a/modules/lwjgl/core/src/main/java/org/lwjgl/system/Struct.java +++ b/modules/lwjgl/core/src/main/java/org/lwjgl/system/Struct.java @@ -147,6 +147,7 @@ public static void validate(long array, int count, int SIZEOF, StructValidation validation.validate(array + Integer.toUnsignedLong(i) * SIZEOF); } } + public static void validate(long array, long count, int SIZEOF, StructValidation validation) { validate(array, (int)count, SIZEOF, validation); } // ---------------- Struct Member Layout ---------------- diff --git a/modules/lwjgl/llvm/src/generated/java/org/lwjgl/llvm/LLVMOrcCSymbolDependenceGroup.java b/modules/lwjgl/llvm/src/generated/java/org/lwjgl/llvm/LLVMOrcCSymbolDependenceGroup.java index 462b2e9bf2..a20e22ee45 100644 --- a/modules/lwjgl/llvm/src/generated/java/org/lwjgl/llvm/LLVMOrcCSymbolDependenceGroup.java +++ b/modules/lwjgl/llvm/src/generated/java/org/lwjgl/llvm/LLVMOrcCSymbolDependenceGroup.java @@ -252,10 +252,10 @@ public static LLVMOrcCSymbolDependenceGroup.Buffer calloc(int capacity, MemorySt */ public static void validate(long struct) { LLVMOrcCSymbolsList.validate(struct + LLVMOrcCSymbolDependenceGroup.SYMBOLS); + long NumDependencies = nNumDependencies(struct); long Dependencies = memGetAddress(struct + LLVMOrcCSymbolDependenceGroup.DEPENDENCIES); check(Dependencies); validate(Dependencies, NumDependencies, LLVMOrcCDependenceMapPair.SIZEOF, LLVMOrcCDependenceMapPair::validate); - long NumDependencies = nNumDependencies(struct); } // -----------------------------------