diff --git a/lib/archive/support/zlib.rb b/lib/archive/support/zlib.rb
index <HASH>..<HASH> 100644
--- a/lib/archive/support/zlib.rb
+++ b/lib/archive/support/zlib.rb
@@ -5,17 +5,20 @@ require 'zlib'
 require 'archive/support/io-like'
 
 module Zlib # :nodoc:
-  if ! const_defined?(:MAX_WBITS) then
-    MAX_WBITS = Deflate::MAX_WBITS
-  end
+  # The maximum size of the zlib history buffer.  Note that zlib allows larger
+  # values to enable different inflate modes.  See Zlib::Inflate.new for details.
+  # Provided here only for Ruby versions that do not provide it.
+  MAX_WBITS = Deflate::MAX_WBITS unless const_defined?(:MAX_WBITS)
 
   # A deflate strategy which limits match distances to 1, also known as
-  # run-length encoding.
-  RLE = 3
+  # run-length encoding.  Provided here only for Ruby versions that do not
+  # provide it.
+  RLE = 3 unless const_defined?(:RLE)
 
   # A deflate strategy which does not use dynamic Huffman codes, allowing for a
-  # simpler decoder to be used to inflate.
-  FIXED = 4
+  # simpler decoder to be used to inflate.  Provided here only for Ruby versions
+  # that do not provide it.
+  FIXED = 4 unless const_defined?(:FIXED)
 
   # Zlib::ZWriter is a writable, IO-like object (includes IO::Like) which wraps
   # other writable, IO-like objects in order to facilitate writing data to those
Only define Zlib constants if they are not already defined

* Fixes constant redefinition warnings under MRI <I>-p0