update to 3.2.4
This commit is contained in:
		
							parent
							
								
									efd8563192
								
							
						
					
					
						commit
						b0814dd143
					
				| @ -1 +1 @@ | |||||||
| jna-3.0.9.tar.bz2 | jna-3.2.4.tar.bz2 | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								import.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								import.log
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | jna-3_2_4-1_el5:F-12:jna-3.2.4-1.el5.src.rpm:1259006256 | ||||||
| @ -1,73 +0,0 @@ | |||||||
| diff -ur jna-3.0.4-svn729/src/com/sun/jna/Function.java jna-3.0.4-svn729.orig/src/com/sun/jna/Function.java
 |  | ||||||
| --- jna-3.0.4-svn729/src/com/sun/jna/Function.java	2008-09-12 10:05:07.000000000 -0400
 |  | ||||||
| +++ jna-3.0.4-svn729.orig/src/com/sun/jna/Function.java	2008-10-01 23:23:38.000000000 -0400
 |  | ||||||
| @@ -12,6 +12,7 @@
 |  | ||||||
|   |  | ||||||
|  import java.lang.reflect.InvocationTargetException; |  | ||||||
|  import java.lang.reflect.Method; |  | ||||||
| +import java.lang.reflect.Array;
 |  | ||||||
|  import java.util.Collections; |  | ||||||
|  import java.util.HashMap; |  | ||||||
|  import java.util.Map; |  | ||||||
| @@ -351,16 +352,41 @@
 |  | ||||||
|          } |  | ||||||
|          return result; |  | ||||||
|      } |  | ||||||
| +
 |  | ||||||
| +    private Class primitiveFromBoxed(Class boxedClass) {
 |  | ||||||
| +	if (boxedClass.isPrimitive())
 |  | ||||||
| +	    return boxedClass;
 |  | ||||||
| +	if (boxedClass == Boolean.class)
 |  | ||||||
| +	    return Boolean.TYPE;
 |  | ||||||
| +	if (boxedClass == Byte.class)
 |  | ||||||
| +	    return Byte.TYPE;
 |  | ||||||
| +	if (boxedClass == Character.class)
 |  | ||||||
| +	    return Character.TYPE;
 |  | ||||||
| +	if (boxedClass == Short.class)
 |  | ||||||
| +	    return Short.TYPE;
 |  | ||||||
| +	if (boxedClass == Integer.class)
 |  | ||||||
| +	    return Integer.TYPE;
 |  | ||||||
| +	if (boxedClass == Long.class)
 |  | ||||||
| +	    return Long.TYPE;
 |  | ||||||
| +	if (boxedClass == Float.class)
 |  | ||||||
| +	    return Float.TYPE;
 |  | ||||||
| +	if (boxedClass == Double.class)
 |  | ||||||
| +	    return Double.TYPE;
 |  | ||||||
| +	return boxedClass;
 |  | ||||||
| +    }
 |  | ||||||
|       |  | ||||||
|      private Object convertArgument(Object[] args, int index, Method invokingMethod, TypeMapper mapper) {  |  | ||||||
|          Object arg = args[index]; |  | ||||||
|          if (arg != null) { |  | ||||||
|              Class type = arg.getClass(); |  | ||||||
|              ToNativeConverter converter = null; |  | ||||||
| +	    boolean isArray = false;
 |  | ||||||
|              if (NativeMapped.class.isAssignableFrom(type)) { |  | ||||||
|                  converter = NativeMappedConverter.getInstance(type); |  | ||||||
| -            }
 |  | ||||||
| -            else if (mapper != null) {
 |  | ||||||
| +            } else if (NativeMapped[].class.isAssignableFrom(type)) {
 |  | ||||||
| +		isArray = true;
 |  | ||||||
| +                converter = NativeMappedConverter.getInstance(type.getComponentType());
 |  | ||||||
| +	    } else if (mapper != null) {
 |  | ||||||
|                  converter = mapper.getToNativeConverter(type); |  | ||||||
|              } |  | ||||||
|              if (converter != null) { |  | ||||||
| @@ -371,7 +397,15 @@
 |  | ||||||
|                  else { |  | ||||||
|                      context = new FunctionParameterContext(this, args, index); |  | ||||||
|                  } |  | ||||||
| -                arg = converter.toNative(arg, context);
 |  | ||||||
| +		if (isArray) {
 |  | ||||||
| +		    NativeMapped[] nativeArg = (NativeMapped[]) arg;
 |  | ||||||
| +		    /* Reassign arg here to a new array */
 |  | ||||||
| +		    arg = Array.newInstance(primitiveFromBoxed(converter.nativeType()), nativeArg.length);
 |  | ||||||
| +		    for (int i = 0; i < nativeArg.length; i++)
 |  | ||||||
| +			Array.set(arg, i, converter.toNative(nativeArg[i], context));
 |  | ||||||
| +		} else {
 |  | ||||||
| +		    arg = converter.toNative(arg, context);
 |  | ||||||
| +		}
 |  | ||||||
|              } |  | ||||||
|          } |  | ||||||
|          if (arg == null || isPrimitiveArray(arg.getClass())) {  |  | ||||||
| Only in jna-3.0.4-svn729.orig/src/com/sun/jna: Function.java~ |  | ||||||
| @ -1,14 +0,0 @@ | |||||||
| --- jna-3.0.9/src/com/sun/jna/NativeLibrary.java	2008-10-28 20:30:54.000000000 -0400
 |  | ||||||
| +++ jna-3.0.9.orig/src/com/sun/jna/NativeLibrary.java	2008-11-15 18:29:52.000000000 -0500
 |  | ||||||
| @@ -374,8 +374,9 @@
 |  | ||||||
|              return name; |  | ||||||
|          } |  | ||||||
|          else if (Platform.isLinux()) { |  | ||||||
| -            if (isVersionedName(libName)) {
 |  | ||||||
| -                // A specific version was requested - use as is for search
 |  | ||||||
| +            if (isVersionedName(libName) || libName.endsWith(".so")) {
 |  | ||||||
| +                // An already mapped name was specified - use as is
 |  | ||||||
| +                // for search
 |  | ||||||
|                  return libName; |  | ||||||
|              } |  | ||||||
|          } |  | ||||||
| @ -1,98 +0,0 @@ | |||||||
| diff -ur jna-3.0.9/native/dispatch.c jna-3.0.9.process/native/dispatch.c
 |  | ||||||
| --- jna-3.0.9/native/dispatch.c	2008-09-22 11:55:59.000000000 -0400
 |  | ||||||
| +++ jna-3.0.9.process/native/dispatch.c	2008-12-30 17:03:22.000000000 -0500
 |  | ||||||
| @@ -641,14 +641,20 @@
 |  | ||||||
|      void *handle = NULL; |  | ||||||
|      LIBNAMETYPE libname = NULL; |  | ||||||
|   |  | ||||||
| -    if ((libname = LIBNAME2CSTR(env, lib)) != NULL) {
 |  | ||||||
| -      handle = (void *)LOAD_LIBRARY(libname);
 |  | ||||||
| -      if (!handle) {
 |  | ||||||
| -        char buf[1024];
 |  | ||||||
| -        throwByName(env, EUnsatisfiedLink, LOAD_ERROR(buf, sizeof(buf)));
 |  | ||||||
| +    /* dlopen on Unix allows NULL to mean "current process" */
 |  | ||||||
| +    if (lib != NULL) {
 |  | ||||||
| +      if ((libname = LIBNAME2CSTR(env, lib)) == NULL) {
 |  | ||||||
| +        return (jlong)A2L(NULL);
 |  | ||||||
|        } |  | ||||||
| -      free(libname);
 |  | ||||||
|      } |  | ||||||
| +
 |  | ||||||
| +    handle = (void *)LOAD_LIBRARY(libname);
 |  | ||||||
| +    if (!handle) {
 |  | ||||||
| +      char buf[1024];
 |  | ||||||
| +      throwByName(env, EUnsatisfiedLink, LOAD_ERROR(buf, sizeof(buf)));
 |  | ||||||
| +    }
 |  | ||||||
| +    if (libname != NULL)
 |  | ||||||
| +      free(libname);
 |  | ||||||
|      return (jlong)A2L(handle); |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| diff -ur jna-3.0.9/src/com/sun/jna/NativeLibrary.java jna-3.0.9.process/src/com/sun/jna/NativeLibrary.java
 |  | ||||||
| --- jna-3.0.9/src/com/sun/jna/NativeLibrary.java	2008-12-30 17:19:15.000000000 -0500
 |  | ||||||
| +++ jna-3.0.9.process/src/com/sun/jna/NativeLibrary.java	2008-12-30 17:17:45.000000000 -0500
 |  | ||||||
| @@ -45,6 +45,7 @@
 |  | ||||||
|      private final String libraryPath; |  | ||||||
|      private final Map functions = new HashMap(); |  | ||||||
|   |  | ||||||
| +    private static WeakReference currentProcess;
 |  | ||||||
|      private static final Map libraries = new HashMap(); |  | ||||||
|      private static final Map searchPaths = Collections.synchronizedMap(new HashMap()); |  | ||||||
|      private static final List librarySearchPath = new LinkedList(); |  | ||||||
| @@ -196,6 +197,27 @@
 |  | ||||||
|      } |  | ||||||
|   |  | ||||||
|      /** |  | ||||||
| +     * Returns an instance of NativeLibrary which refers to the current process.
 |  | ||||||
| +     * This is useful for accessing functions which were already mapped by some
 |  | ||||||
| +     * other mechanism, without having to reference or even know the exact
 |  | ||||||
| +     * name of the native library.
 |  | ||||||
| +     */
 |  | ||||||
| +    public static synchronized final NativeLibrary getProcess() {
 |  | ||||||
| +        NativeLibrary library = null;
 |  | ||||||
| +        if (currentProcess != null) {
 |  | ||||||
| +            library = (NativeLibrary) currentProcess.get();
 |  | ||||||
| +        }
 |  | ||||||
| +
 |  | ||||||
| +        if (library == null) {
 |  | ||||||
| +           long handle = open(null);
 |  | ||||||
| +           library = new NativeLibrary("<process>", null, handle);
 |  | ||||||
| +           currentProcess = new WeakReference(library);
 |  | ||||||
| +        }
 |  | ||||||
| +
 |  | ||||||
| +        return library;
 |  | ||||||
| +    }
 |  | ||||||
| +
 |  | ||||||
| +    /**
 |  | ||||||
|       * Add a path to search for the specified library, ahead of any system paths |  | ||||||
|       * |  | ||||||
|       * @param libraryName The name of the library to use the path for |  | ||||||
| @@ -287,9 +309,13 @@
 |  | ||||||
|      public String getName() { |  | ||||||
|          return libraryName; |  | ||||||
|      } |  | ||||||
| -    /** Returns the file on disk corresponding to this NativeLibrary instacne.
 |  | ||||||
| +    /** 
 |  | ||||||
| +     * Returns the file on disk corresponding to this NativeLibrary instance.
 |  | ||||||
| +     * If this NativeLibrary represents the current process, this function will return null. 
 |  | ||||||
|       */ |  | ||||||
|      public File getFile() { |  | ||||||
| +        if (libraryPath == null)
 |  | ||||||
| +            return null;
 |  | ||||||
|          return new File(libraryPath); |  | ||||||
|      } |  | ||||||
|      /** Close the library when it is no longer referenced. */ |  | ||||||
| @@ -300,8 +326,11 @@
 |  | ||||||
|      public void dispose() { |  | ||||||
|          synchronized(libraries) { |  | ||||||
|              libraries.remove(getName()); |  | ||||||
| -            libraries.remove(getFile().getAbsolutePath());
 |  | ||||||
| -            libraries.remove(getFile().getName());
 |  | ||||||
| +            File path = getFile();
 |  | ||||||
| +            if (path != null) {
 |  | ||||||
| +                libraries.remove(path.getAbsolutePath());
 |  | ||||||
| +                libraries.remove(path.getName());
 |  | ||||||
| +            }
 |  | ||||||
|          } |  | ||||||
|          synchronized(this) { |  | ||||||
|              if (handle != 0) { |  | ||||||
| @ -1,7 +1,7 @@ | |||||||
| diff -ur jna-3.0.9/src/com/sun/jna/Native.java jna-3.0.9.orig/src/com/sun/jna/Native.java
 | diff -up ./src/com/sun/jna/Native.java.loadlib ./src/com/sun/jna/Native.java
 | ||||||
| --- jna-3.0.9/src/com/sun/jna/Native.java	2008-10-31 20:35:02.000000000 -0400
 | --- ./src/com/sun/jna/Native.java.loadlib	2009-11-09 10:23:05.000000000 +0100
 | ||||||
| +++ jna-3.0.9.orig/src/com/sun/jna/Native.java	2008-10-31 20:42:23.000000000 -0400
 | +++ ./src/com/sun/jna/Native.java	2009-11-09 10:30:41.000000000 +0100
 | ||||||
| @@ -504,109 +504,17 @@
 | @@ -630,131 +630,19 @@ public final class Native {
 | ||||||
|      } |      } | ||||||
|   |   | ||||||
|      /** |      /** | ||||||
| @ -28,6 +28,7 @@ diff -ur jna-3.0.9/src/com/sun/jna/Native.java jna-3.0.9.orig/src/com/sun/jna/Na | |||||||
| -                String path = new File(new File(dirs[i]), System.mapLibraryName(libName)).getAbsolutePath();
 | -                String path = new File(new File(dirs[i]), System.mapLibraryName(libName)).getAbsolutePath();
 | ||||||
| -                try {
 | -                try {
 | ||||||
| -                    System.load(path);
 | -                    System.load(path);
 | ||||||
|  | -                    nativeLibraryPath = path;
 | ||||||
| -                    return;
 | -                    return;
 | ||||||
| -                } catch (UnsatisfiedLinkError ex) {
 | -                } catch (UnsatisfiedLinkError ex) {
 | ||||||
| -                }
 | -                }
 | ||||||
| @ -41,7 +42,9 @@ diff -ur jna-3.0.9/src/com/sun/jna/Native.java jna-3.0.9.orig/src/com/sun/jna/Na | |||||||
| -                        ext = "dylib";
 | -                        ext = "dylib";
 | ||||||
| -                    }
 | -                    }
 | ||||||
| -                    try {
 | -                    try {
 | ||||||
| -                        System.load(path.substring(0, path.lastIndexOf(orig)) + ext);
 | -                        path = path.substring(0, path.lastIndexOf(orig)) + ext;
 | ||||||
|  | -                        System.load(path);
 | ||||||
|  | -                        nativeLibraryPath = path;
 | ||||||
| -                        return;
 | -                        return;
 | ||||||
| -                    } catch (UnsatisfiedLinkError ex) {
 | -                    } catch (UnsatisfiedLinkError ex) {
 | ||||||
| -                    }
 | -                    }
 | ||||||
| @ -50,22 +53,30 @@ diff -ur jna-3.0.9/src/com/sun/jna/Native.java jna-3.0.9.orig/src/com/sun/jna/Na | |||||||
| -        }
 | -        }
 | ||||||
|          try { |          try { | ||||||
| -            System.loadLibrary(libName);
 | -            System.loadLibrary(libName);
 | ||||||
| -        }
 | -            nativeLibraryPath = libName;
 | ||||||
| -        catch(UnsatisfiedLinkError e) {
 | +            System.load("@JNIPATH@/" + System.mapLibraryName("jnidispatch"));
 | ||||||
|  | +            nativeLibraryPath = "@JNIPATH@/" + System.mapLibraryName("jnidispatch");
 | ||||||
|  |          } | ||||||
|  |          catch(UnsatisfiedLinkError e) { | ||||||
| -            loadNativeLibraryFromJar();
 | -            loadNativeLibraryFromJar();
 | ||||||
| -        }
 | -        }
 | ||||||
| -    }
 | -    }
 | ||||||
| -
 | -
 | ||||||
| -    /**
 | -    /**
 | ||||||
| -     * Extracts and loads the JNA stub library from jna.jar
 | -     * Attempts to load the native library resource from the filesystem,
 | ||||||
|  | -     * extracting the JNA stub library from jna.jar if not already available.
 | ||||||
| -     */
 | -     */
 | ||||||
| -    private static void loadNativeLibraryFromJar() {
 | -    private static void loadNativeLibraryFromJar() {
 | ||||||
| -        String libname = System.mapLibraryName("jnidispatch");
 | -        String libname = System.mapLibraryName("jnidispatch");
 | ||||||
| -        String resourceName = getNativeLibraryResourcePath() + "/" + libname;
 | -        String arch = System.getProperty("os.arch");
 | ||||||
|  | -        String name = System.getProperty("os.name");
 | ||||||
|  | -        String resourceName = getNativeLibraryResourcePath(Platform.getOSType(), arch, name) + "/" + libname;
 | ||||||
| -        URL url = Native.class.getResource(resourceName);
 | -        URL url = Native.class.getResource(resourceName);
 | ||||||
| -                
 | -                
 | ||||||
| -        // Add an ugly hack for OpenJDK (soylatte) - JNI libs use the usual .dylib extension
 | -        // Add an ugly hack for OpenJDK (soylatte) - JNI libs use the usual
 | ||||||
| -        if (url == null && Platform.isMac() && resourceName.endsWith(".dylib")) {
 | -        // .dylib extension 
 | ||||||
|  | -        if (url == null && Platform.isMac()
 | ||||||
|  | -            && resourceName.endsWith(".dylib")) {
 | ||||||
| -            resourceName = resourceName.substring(0, resourceName.lastIndexOf(".dylib")) + ".jnilib";
 | -            resourceName = resourceName.substring(0, resourceName.lastIndexOf(".dylib")) + ".jnilib";
 | ||||||
| -            url = Native.class.getResource(resourceName);
 | -            url = Native.class.getResource(resourceName);
 | ||||||
| -        }
 | -        }
 | ||||||
| @ -76,8 +87,15 @@ diff -ur jna-3.0.9/src/com/sun/jna/Native.java jna-3.0.9.orig/src/com/sun/jna/Na | |||||||
| -    
 | -    
 | ||||||
| -        File lib = null;
 | -        File lib = null;
 | ||||||
| -        if (url.getProtocol().toLowerCase().equals("file")) {
 | -        if (url.getProtocol().toLowerCase().equals("file")) {
 | ||||||
| -            // NOTE: use older API for 1.3 compatibility
 | -            try {
 | ||||||
| -            lib = new File(URLDecoder.decode(url.getPath()));
 | -                lib = new File(url.toURI());
 | ||||||
|  | -            }
 | ||||||
|  | -            catch(URISyntaxException e) {
 | ||||||
|  | -                lib = new File(url.getPath());
 | ||||||
|  | -            }
 | ||||||
|  | -            if (!lib.exists()) {
 | ||||||
|  | -                throw new Error("File URL " + url + " could not be properly decoded");
 | ||||||
|  | -            }
 | ||||||
| -        }
 | -        }
 | ||||||
| -        else {
 | -        else {
 | ||||||
| -            InputStream is = Native.class.getResourceAsStream(resourceName);
 | -            InputStream is = Native.class.getResourceAsStream(resourceName);
 | ||||||
| @ -88,10 +106,14 @@ diff -ur jna-3.0.9/src/com/sun/jna/Native.java jna-3.0.9.orig/src/com/sun/jna/Na | |||||||
| -            FileOutputStream fos = null;
 | -            FileOutputStream fos = null;
 | ||||||
| -            try {
 | -            try {
 | ||||||
| -                // Suffix is required on windows, or library fails to load
 | -                // Suffix is required on windows, or library fails to load
 | ||||||
| -                // Let Java pick the suffix
 | -                // Let Java pick the suffix, except on windows, to avoid
 | ||||||
| -                lib = File.createTempFile("jna", null);
 | -                // problems with Web Start.
 | ||||||
|  | -                lib = File.createTempFile("jna", Platform.isWindows()?".dll":null);
 | ||||||
| -                lib.deleteOnExit();
 | -                lib.deleteOnExit();
 | ||||||
| -                if (Platform.deleteNativeLibraryAfterVMExit()) {
 | -                ClassLoader cl = Native.class.getClassLoader();
 | ||||||
|  | -                if (Platform.deleteNativeLibraryAfterVMExit()
 | ||||||
|  | -                    && (cl == null
 | ||||||
|  | -                        || cl.equals(ClassLoader.getSystemClassLoader()))) {
 | ||||||
| -                    Runtime.getRuntime().addShutdownHook(new DeleteNativeLibrary(lib));
 | -                    Runtime.getRuntime().addShutdownHook(new DeleteNativeLibrary(lib));
 | ||||||
| -                }
 | -                }
 | ||||||
| -                fos = new FileOutputStream(lib);
 | -                fos = new FileOutputStream(lib);
 | ||||||
| @ -110,12 +132,11 @@ diff -ur jna-3.0.9/src/com/sun/jna/Native.java jna-3.0.9.orig/src/com/sun/jna/Na | |||||||
| -                    try { fos.close(); } catch(IOException e) { }
 | -                    try { fos.close(); } catch(IOException e) { }
 | ||||||
| -                }
 | -                }
 | ||||||
| -            }
 | -            }
 | ||||||
| +            System.load("@JNIPATH@/" + System.mapLibraryName("jnidispatch"));
 | -            unpacked = true;
 | ||||||
| +        } catch(UnsatisfiedLinkError e) {
 | +            throw new RuntimeException(e);
 | ||||||
| +	    throw new RuntimeException(e);
 |  | ||||||
|          } |          } | ||||||
| -        System.load(lib.getAbsolutePath());
 | -        System.load(lib.getAbsolutePath());
 | ||||||
|  | -        nativeLibraryPath = lib.getAbsolutePath();
 | ||||||
|      } |      } | ||||||
|   |   | ||||||
|      /** |      /** | ||||||
| Only in jna-3.0.9.orig/src/com/sun/jna: Native.java~ |  | ||||||
| @ -1,6 +1,7 @@ | |||||||
| --- jna-3.0.4-svn700/build.xml	2008-10-01 12:57:20.000000000 -0400
 | diff -up ./build.xml.tests-headless ./build.xml
 | ||||||
| +++ jna-3.0.4-svn700.orig/build.xml	2008-10-01 12:57:16.000000000 -0400
 | --- ./build.xml.tests-headless	2009-11-09 10:35:40.000000000 +0100
 | ||||||
| @@ -427,6 +427,7 @@
 | +++ ./build.xml	2009-11-09 10:36:06.000000000 +0100
 | ||||||
|  | @@ -466,6 +466,7 @@
 | ||||||
|        <jvmarg value="-Djna.protected=true"/> |        <jvmarg value="-Djna.protected=true"/> | ||||||
|        <jvmarg value="-Djna.builddir=${build}"/> |        <jvmarg value="-Djna.builddir=${build}"/> | ||||||
|        <jvmarg value="${vmopt.arch}"/> |        <jvmarg value="${vmopt.arch}"/> | ||||||
| @ -1,57 +0,0 @@ | |||||||
| diff -ur jna-3.0.4-svn729/native/callback.c jna-3.0.4-svn729.orig/native/callback.c
 |  | ||||||
| --- jna-3.0.4-svn729/native/callback.c	2008-09-07 13:32:02.000000000 -0400
 |  | ||||||
| +++ jna-3.0.4-svn729.orig/native/callback.c	2008-10-21 00:05:24.000000000 -0400
 |  | ||||||
| @@ -119,6 +119,42 @@
 |  | ||||||
|  } |  | ||||||
|   |  | ||||||
|  static void |  | ||||||
| +call_thread_uncaught(JNIEnv *env)
 |  | ||||||
| +{
 |  | ||||||
| +  jthrowable e;
 |  | ||||||
| +  jclass threadCls;
 |  | ||||||
| +  jclass handlerCls;
 |  | ||||||
| +  jmethodID mid;
 |  | ||||||
| +  jobject threadObj;
 |  | ||||||
| +  jobject handler;
 |  | ||||||
| +
 |  | ||||||
| +  /* Get the exception */
 |  | ||||||
| +  e = (*env)->ExceptionOccurred(env);
 |  | ||||||
| +
 |  | ||||||
| +  /* Now clear it from JNI's point of view, holding our ref to it */
 |  | ||||||
| +  (*env)->ExceptionClear(env);
 |  | ||||||
| +
 |  | ||||||
| +  threadCls = (*env)->FindClass(env, "java/lang/Thread");
 |  | ||||||
| +  if (threadCls == NULL)
 |  | ||||||
| +    return;
 |  | ||||||
| +
 |  | ||||||
| +  mid = (*env)->GetMethodID(env, threadCls, "getCurrentThread",
 |  | ||||||
| +				   "()Ljava/lang/Thread;");
 |  | ||||||
| +  threadObj = (*env)->CallStaticObjectMethod(env, threadCls, mid);
 |  | ||||||
| +  mid = (*env)->GetMethodID(env, threadCls, "getUncaughtExceptionHandler",
 |  | ||||||
| +			 "()Ljava/lang/Thread$UncaughtExceptionHandler;");
 |  | ||||||
| +  handler = (*env)->CallObjectMethod(env, threadObj, mid);
 |  | ||||||
| +  if (handler == NULL)
 |  | ||||||
| +    return;
 |  | ||||||
| +
 |  | ||||||
| +  handlerCls = (*env)->GetObjectClass(env, handler);
 |  | ||||||
| +  mid = (*env)->GetMethodID(env, handlerCls, "uncaughtException",
 |  | ||||||
| +			 "(Ljava/lang/Thread;Ljava/lang/Throwable;)V");
 |  | ||||||
| +
 |  | ||||||
| +  (*env)->CallObjectMethod(env, handler, mid, threadObj, e);
 |  | ||||||
| +}
 |  | ||||||
| +
 |  | ||||||
| +static void
 |  | ||||||
|  callback_invoke(JNIEnv* env, callback *cb, ffi_cif* cif, void *resp, void **cbargs) { |  | ||||||
|    jobject self; |  | ||||||
|   |  | ||||||
| @@ -140,7 +176,8 @@
 |  | ||||||
|      } |  | ||||||
|      result = (*env)->CallObjectMethod(env, self, cb->methodID, array); |  | ||||||
|      if ((*env)->ExceptionCheck(env)) { |  | ||||||
| -      fprintf(stderr, "JNA: uncaught exception in callback, continuing\n");
 |  | ||||||
| +      /* Toss it over to the current thread's uncaught handler */
 |  | ||||||
| +      call_thread_uncaught(env);
 |  | ||||||
|        memset(resp, 0, cif->rtype->size); |  | ||||||
|      } |  | ||||||
|      else { |  | ||||||
| Only in jna-3.0.4-svn729.orig/native: callback.c~ |  | ||||||
| @ -1,26 +0,0 @@ | |||||||
| diff -ur jna-3.0.4-svn729/src/com/sun/jna/Function.java jna-3.0.4-svn729.orig/src/com/sun/jna/Function.java
 |  | ||||||
| --- jna-3.0.4-svn729/src/com/sun/jna/Function.java	2008-10-14 19:47:44.000000000 -0400
 |  | ||||||
| +++ jna-3.0.4-svn729.orig/src/com/sun/jna/Function.java	2008-10-14 19:48:00.000000000 -0400
 |  | ||||||
| @@ -314,6 +314,20 @@
 |  | ||||||
|              String s = invokeString(callingConvention, args, true); |  | ||||||
|              result = s != null ? new WString(s) : null; |  | ||||||
|          } |  | ||||||
| +        else if (returnType == String[].class) {
 |  | ||||||
| +	    Pointer tmp = invokePointer(callingConvention, args);
 |  | ||||||
| +	    if (tmp != null)
 |  | ||||||
| +		result = tmp.getStringArray(0);
 |  | ||||||
| +	    else
 |  | ||||||
| +		result = null;
 |  | ||||||
| +        }
 |  | ||||||
| +        else if (returnType == WString[].class) {
 |  | ||||||
| +	    Pointer tmp = invokePointer(callingConvention, args);
 |  | ||||||
| +	    if (tmp != null)
 |  | ||||||
| +		result = tmp.getStringArray(0, true);
 |  | ||||||
| +	    else
 |  | ||||||
| +		result = null;
 |  | ||||||
| +        }
 |  | ||||||
|          else if (Pointer.class.isAssignableFrom(returnType)) { |  | ||||||
|              result = invokePointer(callingConvention, args); |  | ||||||
|          } |  | ||||||
| Only in jna-3.0.4-svn729.orig/src/com/sun/jna: Function.java~ |  | ||||||
| Only in jna-3.0.4-svn729/src/com/sun/jna: Function.java.nativemapped-array |  | ||||||
							
								
								
									
										59
									
								
								jna.spec
									
									
									
									
									
								
							
							
						
						
									
										59
									
								
								jna.spec
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
| Name:           jna | Name:           jna | ||||||
| Version:        3.0.9 | Version:        3.2.4 | ||||||
| Release:        5%{?dist} | Release:        1%{?dist} | ||||||
| Summary:        Pure Java access to native libraries | Summary:        Pure Java access to native libraries | ||||||
| 
 | 
 | ||||||
| Group:          Development/Libraries | Group:          Development/Libraries | ||||||
| @ -9,33 +9,29 @@ URL:            https://jna.dev.java.net/ | |||||||
| # The source for this package was pulled from upstream's vcs. Use the | # The source for this package was pulled from upstream's vcs. Use the | ||||||
| # following commands to generate the tarball: | # following commands to generate the tarball: | ||||||
| #   svn export https://jna.dev.java.net/svn/jna/tags/%{version}/jnalib/ --username guest jna-%{version} | #   svn export https://jna.dev.java.net/svn/jna/tags/%{version}/jnalib/ --username guest jna-%{version} | ||||||
| #   rm dist/* | #   rm jna-%{version}/dist/* | ||||||
| #   tar -cjf jna-%{version}.tar.bz2 jna-%{version} | #   tar -cjf jna-%{version}.tar.bz2 jna-%{version} | ||||||
| Source0:        %{name}-%{version}.tar.bz2 | Source0:        %{name}-%{version}.tar.bz2 | ||||||
| # This patch is Fedora-specific for now until we get the huge | # This patch is Fedora-specific for now until we get the huge | ||||||
| # JNI library location mess sorted upstream | # JNI library location mess sorted upstream | ||||||
| Patch1:         jna-3.0.2-loadlibrary.patch | Patch1:         jna-3.2.4-loadlibrary.patch | ||||||
| # The X11 tests currently segfault; overall I think the X11 JNA stuff is just a  | # The X11 tests currently segfault; overall I think the X11 JNA stuff is just a  | ||||||
| # Really Bad Idea, for relying on AWT internals, using the X11 API at all, | # Really Bad Idea, for relying on AWT internals, using the X11 API at all, | ||||||
| # and using a complex API like X11 through JNA just increases the potential | # and using a complex API like X11 through JNA just increases the potential | ||||||
| # for problems. | # for problems. | ||||||
| Patch2:         jna-tests-headless.patch | Patch2:         jna-3.2.4-tests-headless.patch | ||||||
| # https://jna.dev.java.net/issues/show_bug.cgi?id=90 |  | ||||||
| Patch3:         jna-3.0.4-nativemapped-array.patch |  | ||||||
| # Not yet sent upstream - haven't decided whether it's a good idea yet, |  | ||||||
| # but keeping around here for now. |  | ||||||
| Patch5:         jna-callback-exception.patch |  | ||||||
| # https://jna.dev.java.net/issues/show_bug.cgi?id=95 |  | ||||||
| Patch6:		jna-3.0.9-linux-nomaplibrary.patch |  | ||||||
| # https://jna.dev.java.net/issues/show_bug.cgi?id=98 |  | ||||||
| Patch7:         jna-3.0.9-processopen.patch |  | ||||||
| BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) | BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) | ||||||
| 
 | 
 | ||||||
| BuildRequires:  java-devel >= 1.6 ant jpackage-utils ant-nodeps | BuildRequires:  java-devel >= 1.6 ant jpackage-utils ant-nodeps | ||||||
| BuildRequires:  libX11-devel libXt-devel libffi-devel | BuildRequires:  libX11-devel libXt-devel libffi-devel | ||||||
| # We manually require libffi because find-requires doesn't work | # We manually require libffi because find-requires doesn't work | ||||||
| # inside jars. | # inside jars. | ||||||
| Requires:       java >= 1:1.6.0 jpackage-utils | Requires:       java >= 1:1.6.0 jpackage-utils libffi | ||||||
|  | # for ExcludeArch see bug: 468831 | ||||||
|  | %if 0%{?rhel} < 6 | ||||||
|  | ExcludeArch: ppc ppc64 | ||||||
|  | %endif | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| %description | %description | ||||||
| JNA provides Java programs easy access to native shared libraries | JNA provides Java programs easy access to native shared libraries | ||||||
| @ -56,14 +52,20 @@ Requires:       %{name} = %{version}-%{release} | |||||||
| This package contains the javadocs for %{name}. | This package contains the javadocs for %{name}. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | %package        examples | ||||||
|  | Summary:        Examples for %{name} | ||||||
|  | Group:          Documentation | ||||||
|  | Requires:       %{name} = %{version}-%{release} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %description    examples | ||||||
|  | This package contains the examples for %{name}. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| %prep | %prep | ||||||
| %setup -q -n %{name}-%{version} | %setup -q -n %{name}-%{version} | ||||||
| sed -e 's|@JNIPATH@|%{_libdir}/%{name}|' %{PATCH1} | patch -p1 | sed -e 's|@JNIPATH@|%{_libdir}/%{name}|' %{PATCH1} | patch -p1 | ||||||
| %patch2 -p1 -b .tests-headless | %patch2 -p1 -b .tests-headless | ||||||
| %patch3 -p1 -b .nativemapped-array |  | ||||||
| #%patch5 -p1 -b .callback-exception |  | ||||||
| %patch6 -p1 -b .linux-nomaplibrary |  | ||||||
| %patch7 -p1 -b .processopen |  | ||||||
| 
 | 
 | ||||||
| # all java binaries must be removed from the sources | # all java binaries must be removed from the sources | ||||||
| find . -name '*.jar' -exec rm -f '{}' \; | find . -name '*.jar' -exec rm -f '{}' \; | ||||||
| @ -80,7 +82,7 @@ chmod 0644 LICENSE.txt | |||||||
| %build | %build | ||||||
| # We pass -Ddynlink.native which comes from our patch because | # We pass -Ddynlink.native which comes from our patch because | ||||||
| # upstream doesn't want to default to dynamic linking. | # upstream doesn't want to default to dynamic linking. | ||||||
| ant jar -Dcflags_extra.native="%{optflags}" -Ddynlink.native=true -Dnomixedjar.native=true | ant -Dcflags_extra.native="%{optflags}" -Ddynlink.native=true -Dnomixedjar.native=true jar examples | ||||||
| ant javadoc | ant javadoc | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -89,6 +91,7 @@ rm -rf %{buildroot} | |||||||
| 
 | 
 | ||||||
| # jars | # jars | ||||||
| install -D -m 644 build*/%{name}.jar %{buildroot}%{_javadir}/%{name}-%{version}.jar | install -D -m 644 build*/%{name}.jar %{buildroot}%{_javadir}/%{name}-%{version}.jar | ||||||
|  | install -D -m 644 build*/examples.jar %{buildroot}%{_javadir}/%{name}-examples-%{version}.jar | ||||||
| (cd %{buildroot}%{_javadir}/; for jar in `ls *-%{version}.jar`; do ln -s $jar `echo $jar | sed -e 's/-%{version}//'`; done) | (cd %{buildroot}%{_javadir}/; for jar in `ls *-%{version}.jar`; do ln -s $jar `echo $jar | sed -e 's/-%{version}//'`; done) | ||||||
| # NOTE: JNA has highly custom code to look for native jars in this | # NOTE: JNA has highly custom code to look for native jars in this | ||||||
| # directory.  Since this roughly matches the jpackage guidelines, | # directory.  Since this roughly matches the jpackage guidelines, | ||||||
| @ -109,14 +112,28 @@ rm -rf %{buildroot} | |||||||
| %defattr(-,root,root,-) | %defattr(-,root,root,-) | ||||||
| %doc LICENSE.txt | %doc LICENSE.txt | ||||||
| %{_libdir}/%{name} | %{_libdir}/%{name} | ||||||
| %{_javadir}/*.jar | %{_javadir}/%{name}.jar | ||||||
|  | %{_javadir}/%{name}-%{version}.jar | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| %files javadoc | %files javadoc | ||||||
| %defattr(-,root,root,-) | %defattr(-,root,root,-) | ||||||
| %{_javadocdir}/%{name}-%{version} | %{_javadocdir}/%{name}-%{version} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | %files examples | ||||||
|  | %defattr(-,root,root,-) | ||||||
|  | %{_javadir}/%{name}-examples.jar | ||||||
|  | %{_javadir}/%{name}-examples-%{version}.jar | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Sat Nov 14 2009 Levente Farkas <lfarkas@lfarkas.org> - 3.2.4-1 | ||||||
|  | - Rebase on upstream 3.2.4 | ||||||
|  | 
 | ||||||
|  | * Thu Oct 29 2009 Lubomir Rintel <lkundrak@v3.sk> - 3.0.9-6 | ||||||
|  | - Add examples subpackage | ||||||
|  | 
 | ||||||
| * Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.9-5 | * Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.9-5 | ||||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild | - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user