This is an automated email from the git hooks/post-receive script.

ebourg-guest pushed a commit to branch master
in repository procyon.

commit 571598178340b567e25b4cff7224ed3601f59542
Author: Emmanuel Bourg <ebo...@apache.org>
Date:   Fri Mar 30 09:19:31 2018 +0200

    Backported a Java 9 fix (Closes: #894286)
---
 debian/changelog                            |   6 ++
 debian/patches/03-java9-compatibility.patch | 126 ++++++++++++++++++++++++++++
 debian/patches/series                       |   1 +
 3 files changed, 133 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 38e5c48..185beb1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+procyon (0.5.32-3) unstable; urgency=medium
+
+  * Backported a Java 9 fix (Closes: #894286)
+
+ -- Emmanuel Bourg <ebo...@apache.org>  Fri, 30 Mar 2018 09:19:21 +0200
+
 procyon (0.5.32-2) unstable; urgency=medium
 
   [ Kai-Chung Yan ]
diff --git a/debian/patches/03-java9-compatibility.patch 
b/debian/patches/03-java9-compatibility.patch
new file mode 100644
index 0000000..253f138
--- /dev/null
+++ b/debian/patches/03-java9-compatibility.patch
@@ -0,0 +1,126 @@
+Description: Java 9 Compatibility Fixes
+Origin: backport, https://bitbucket.org/mstrobel/procyon/commits/7f19d10
+--- 
a/Procyon.CompilerTools/src/main/java/com/strobel/assembler/metadata/ClasspathTypeLoader.java
++++ 
b/Procyon.CompilerTools/src/main/java/com/strobel/assembler/metadata/ClasspathTypeLoader.java
+@@ -16,19 +16,11 @@
+ 
+ package com.strobel.assembler.metadata;
+ 
+-import com.strobel.core.StringUtilities;
+-import com.strobel.core.VerifyArgument;
+-import sun.misc.Resource;
+-import sun.misc.URLClassPath;
+-
+-import java.io.File;
+ import java.io.IOException;
+-import java.lang.reflect.UndeclaredThrowableException;
+-import java.net.MalformedURLException;
++import java.io.InputStream;
+ import java.net.URL;
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
+-import java.util.regex.Pattern;
+ 
+ /**
+  * @author Mike Strobel
+@@ -36,34 +28,14 @@
+ public final class ClasspathTypeLoader implements ITypeLoader {
+     private final static Logger LOG = 
Logger.getLogger(ClasspathTypeLoader.class.getSimpleName());
+ 
+-    private final URLClassPath _classPath;
++    private final ClassLoader _loader;
+ 
+     public ClasspathTypeLoader() {
+-        this(
+-            StringUtilities.join(
+-                System.getProperty("path.separator"),
+-                System.getProperty("java.class.path"),
+-                System.getProperty("sun.boot.class.path")
+-            )
+-        );
++        _loader = ClassLoader.getSystemClassLoader();
+     }
+ 
+     public ClasspathTypeLoader(final String classPath) {
+-        final String[] parts = VerifyArgument.notNull(classPath, "classPath")
+-                                             
.split(Pattern.quote(System.getProperty("path.separator")));
+-
+-        final URL[] urls = new URL[parts.length];
+-
+-        for (int i = 0; i < parts.length; i++) {
+-            try {
+-                urls[i] = new File(parts[i]).toURI().toURL();
+-            }
+-            catch (MalformedURLException e) {
+-                throw new UndeclaredThrowableException(e);
+-            }
+-        }
+-
+-        _classPath = new URLClassPath(urls);
++        throw new UnsupportedOperationException("Custom classpaths are 
temporarily unsupported.");
+     }
+ 
+     @Override
+@@ -73,29 +45,32 @@
+         }
+ 
+         final String path = internalName.concat(".class");
+-        final Resource resource = _classPath.getResource(path, false);
++        final URL resource = _loader.getResource(path);
+ 
+         if (resource == null) {
+             return false;
+         }
+ 
+-        final byte[] data;
++        try (final InputStream stream = _loader.getResourceAsStream(path)) {
++            final byte[] temp = new byte[4096];
+ 
+-        try {
+-            data = resource.getBytes();
+-            assert data.length == resource.getContentLength();
+-        }
+-        catch (IOException e) {
+-            return false;
+-        }
++            int bytesRead;
+ 
+-        buffer.reset(data.length);
+-        System.arraycopy(data, 0, buffer.array(), 0, data.length);
++            while ((bytesRead = stream.read(temp, 0, temp.length)) > 0) {
++                buffer.ensureWriteableBytes(bytesRead);
++                buffer.putByteArray(temp, 0, bytesRead);
++            }
+ 
+-        if (LOG.isLoggable(Level.FINE)) {
+-            LOG.fine("Type loaded from " + resource.getURL() + ".");
+-        }
++            buffer.flip();
+ 
+-        return true;
++            if (LOG.isLoggable(Level.FINE)) {
++                LOG.fine("Type loaded from " + resource + ".");
++            }
++
++            return true;
++        }
++        catch (final IOException ignored) {
++            return false;
++        }
+     }
+ }
+--- 
a/Procyon.Expressions/src/main/java/com/strobel/expressions/LambdaCompiler.java
++++ 
b/Procyon.Expressions/src/main/java/com/strobel/expressions/LambdaCompiler.java
+@@ -2792,10 +2792,10 @@
+         }
+ 
+         if (name != null) {
+-            return String.format("%s.%s[0x%3$04x]", p.getName(), name, 
nextId.getAndIncrement());
++            return String.format("%s.%s$0x%3$04x", p.getName(), name, 
nextId.getAndIncrement());
+         }
+ 
+-        return String.format("%s.f__Lambda[0x%2$04x]", p.getName(), 
nextId.getAndIncrement());
++        return String.format("%s.f__Lambda$0x%2$04x", p.getName(), 
nextId.getAndIncrement());
+     }
+ 
+     private void emitLambdaBody() {
diff --git a/debian/patches/series b/debian/patches/series
index 5acf0d1..df0fe30 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 01-disable-fatjar-plugin.patch
 02-cli-program-name.patch
+03-java9-compatibility.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-java/procyon.git

_______________________________________________
pkg-java-commits mailing list
pkg-java-comm...@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to