diff --git a/src/ZODB/DemoStorage.py b/src/ZODB/DemoStorage.py
index ebff82e6b4670b04144c672042f1a7ea3592ddf2..4bcc18d940b50f756dff1ee83f4bb3b834d5d148 100644
--- a/src/ZODB/DemoStorage.py
+++ b/src/ZODB/DemoStorage.py
@@ -194,7 +194,17 @@ class DemoStorage(object):
             
             return oid
 
-    def pack(self, t, referencesf, gc=False):
+    def pack(self, t, referencesf, gc=None):
+        if gc is None:
+            if self._temporary_base:
+                return self.changes.pack(t, referencesf)
+        elif self._temporary_base:
+            return self.changes.pack(t, referencesf, gc=gc)
+        elif gc:
+            raise TypeError(
+                "Garbage collection isn't supported"
+                " when there is a base storage.")
+        
         try:
             self.changes.pack(t, referencesf, gc=False)
         except TypeError, v: