Merge "Demo associated with java_library build change"
diff --git a/luni/src/test/java/libcore/java/util/zip/GZIPInputStreamTest.java b/luni/src/test/java/libcore/java/util/zip/GZIPInputStreamTest.java
index d9f3fe4..19ee2b9 100644
--- a/luni/src/test/java/libcore/java/util/zip/GZIPInputStreamTest.java
+++ b/luni/src/test/java/libcore/java/util/zip/GZIPInputStreamTest.java
@@ -202,6 +202,16 @@
}
}
+ public void testNonGzipData() {
+ byte[] data = new byte[100];
+ try (InputStream is = new GZIPInputStream(new ByteArrayInputStream(data), data.length)) {
+ fail();
+ } catch (IOException expected) {
+ // Zeroes do not match the GZIPInputStream.GZIP_MAGIC number.
+ assertEquals("Not in GZIP format", expected.getMessage());
+ }
+ }
+
/**
* Test a openJdk8 fix for case where GZIPInputStream.readTrailer may accidently
* close the input stream if trailing bytes looks "close" enough. Wrapping GZIP in
diff --git a/ojluni/src/main/java/java/time/format/DateTimeTextProvider.java b/ojluni/src/main/java/java/time/format/DateTimeTextProvider.java
index df1f10e..260196a 100644
--- a/ojluni/src/main/java/java/time/format/DateTimeTextProvider.java
+++ b/ojluni/src/main/java/java/time/format/DateTimeTextProvider.java
@@ -509,7 +509,7 @@
// ResourceBundle rb = lr.getJavaTimeFormatData();
// return rb.containsKey(key) ? (T) rb.getObject(key) : null;
// }
- // END BEGIN Android-removed: Android uses ICU resources and has no LocaleProviderAdapter.
+ // END Android-removed: Android uses ICU resources and has no LocaleProviderAdapter.
/**
* Stores the text for a single locale.
diff --git a/ojluni/src/main/java/java/util/zip/GZIPInputStream.java b/ojluni/src/main/java/java/util/zip/GZIPInputStream.java
index 915d446..109454c 100644
--- a/ojluni/src/main/java/java/util/zip/GZIPInputStream.java
+++ b/ojluni/src/main/java/java/util/zip/GZIPInputStream.java
@@ -75,9 +75,17 @@
*/
public GZIPInputStream(InputStream in, int size) throws IOException {
super(in, new Inflater(true), size);
- // Android-changed: Unconditionally close external inflaters (b/26462400)
+ // Android-removed: Unconditionally close external inflaters (b/26462400)
// usesDefaultInflater = true;
- readHeader(in);
+ // BEGIN Android-changed: Do not rely on finalization to inf.end().
+ // readHeader(in);
+ try {
+ readHeader(in);
+ } catch (Exception e) {
+ inf.end();
+ throw e;
+ }
+ // END Android-changed: Do not rely on finalization to inf.end().
}
/**
diff --git a/ojluni/src/main/java/sun/nio/ch/DatagramChannelImpl.java b/ojluni/src/main/java/sun/nio/ch/DatagramChannelImpl.java
index c34a305..49ad55c 100644
--- a/ojluni/src/main/java/sun/nio/ch/DatagramChannelImpl.java
+++ b/ojluni/src/main/java/sun/nio/ch/DatagramChannelImpl.java
@@ -354,7 +354,7 @@
synchronized (readLock) {
ensureOpen();
// Socket was not bound before attempting receive
- // Android-Changed: Do not implicitly to bind to 0 (or 0.0.0.0), return null instead.
+ // Android-changed: Do not implicitly to bind to 0 (or 0.0.0.0), return null instead.
if (localAddress() == null)
// bind(null);
return null;