diff --git a/src/com/sun/jna/Structure.java b/src/com/sun/jna/Structure.java index 12e03f7fa..3492923a5 100644 --- a/src/com/sun/jna/Structure.java +++ b/src/com/sun/jna/Structure.java @@ -1002,15 +1002,20 @@ protected List getFieldOrder() { * @param names list of names representing the desired sort order */ protected void sortFields(List fields, List names) { - for (int i=0;i < names.size();i++) { - String name = names.get(i); - for (int f=0;f < fields.size();f++) { - Field field = fields.get(f); - if (name.equals(field.getName())) { - Collections.swap(fields, i, f); - break; + cacheStructureLock.writeLock().lock(); + try { + for (int i=0;i < names.size();i++) { + String name = names.get(i); + for (int f=0;f < fields.size();f++) { + Field field = fields.get(f); + if (name.equals(field.getName())) { + Collections.swap(fields, i, f); + break; + } } } + } finally { + cacheStructureLock.writeLock().unlock(); } }