diff --git a/Lib/gzip.py b/Lib/gzip.py
index 6a9fbc2..8a2a718 100644
--- a/Lib/gzip.py
+++ b/Lib/gzip.py
@@ -129,6 +129,7 @@
         self.fileobj = fileobj
         self.offset = 0
         self.mtime = mtime
+        self.closed = False
 
         if self.mode == WRITE:
             self._write_gzip_header()
@@ -145,6 +146,13 @@
         s = repr(self.fileobj)
         return '<gzip ' + s[1:-1] + ' ' + hex(id(self)) + '>'
 
+    def _check_closed(self):
+        """Raises a ValueError if the underlying file object has been closed.
+
+        """
+        if self.closed:
+            raise ValueError('I/O operation on closed file.')
+
     def _init_write(self, filename):
         self.name = filename
         self.crc = zlib.crc32(b"") & 0xffffffff
@@ -215,6 +223,7 @@
 
 
     def write(self,data):
+        self._check_closed()
         if self.mode != WRITE:
             import errno
             raise IOError(errno.EBADF, "write() on read-only GzipFile object")
@@ -228,6 +237,7 @@
             self.offset += len(data)
 
     def read(self, size=-1):
+        self._check_closed()
         if self.mode != READ:
             import errno
             raise IOError(errno.EBADF, "read() on write-only GzipFile object")
@@ -349,6 +359,7 @@
         if self.myfileobj:
             self.myfileobj.close()
             self.myfileobj = None
+        self.closed = True
 
     def __del__(self):
         try:
@@ -360,6 +371,7 @@
         self.close()
 
     def flush(self,zlib_mode=zlib.Z_SYNC_FLUSH):
+        self._check_closed()
         if self.mode == WRITE:
             # Ensure the compressor's buffer is flushed
             self.fileobj.write(self.compress.flush(zlib_mode))
@@ -377,6 +389,7 @@
         return False
 
     def tell(self):
+        self._check_closed()
         return self.offset
 
     def rewind(self):
