From 649be57dc203068fb2f02cd82cbe7eaad8062dd1 Mon Sep 17 00:00:00 2001 From: Klaus Reimer Date: Sun, 23 Feb 2014 17:23:25 +0100 Subject: [PATCH] Mark as loaded BEFORE loading to prevent recursive loading. When load method is called by usb4java-javax then the loading of the JNI library (Triggered by the load method) triggers the load method again. This results in a crash. Setting the loaded flag before loading the JNI lib prevents this. --- src/main/java/org/usb4java/Loader.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/usb4java/Loader.java b/src/main/java/org/usb4java/Loader.java index 320d414..cb4e31a 100644 --- a/src/main/java/org/usb4java/Loader.java +++ b/src/main/java/org/usb4java/Loader.java @@ -339,13 +339,15 @@ public final class Loader * @throws LoaderException * When loading the native wrapper libraries failed. */ - public static void load() + public synchronized static void load() { + // Do nothing if already loaded (or still loading) if (loaded) { return; } - + + loaded = true; final String platform = getPlatform(); final String lib = getLibName(); final String extraLib = getExtraLibName(); @@ -354,6 +356,5 @@ public final class Loader System.load(extractLibrary(platform, extraLib)); } System.load(extractLibrary(platform, lib)); - loaded = true; } }