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;