--- memcache.inc.orig	2008-10-16 14:59:49.000000000 -0400
+++ memcache.inc	2008-10-16 14:56:01.000000000 -0400
@@ -66,13 +66,17 @@
  * Expire data from the cache. If called without arguments, expirable
  * entries will be cleared from the cache_page table.
  *
+ * Memcache logic is simpler than the core cache because memcache doesn't have
+ * a minimum cache lifetime consideration (it handles it internally), and 
+ * doesn't support wildcards.  Wildcard flushes result in the entire table
+ * being flushed.
+ *
  * @param $cid
  *   If set, the cache ID to delete. Otherwise, all cache entries that can
- *   expire are deleted.
+ *   expire are deleted from the specified table.
  *
  * @param $table
- *   If set, the table $table to delete from. Mandatory
- *   argument if $cid is set.
+ *   If set, the table to delete from.
  *
  * @param $wildcard
  *   If set to TRUE, the $cid is treated as a substring
@@ -80,10 +84,12 @@
  *   match. If '*' is given as $cid, the table $table will be emptied.
  */
 function cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE) {
-  // Memcache logic is simpler because memcache doesn't have a minimum cache
-  // lifetime consideration (it handles it internally), and doesn't support
-  // wildcards.
-  $bin = empty($table) ? 'cache' : $table;
+  // If cid and table are not set, we should flush the cache_page table.
+  if (!isset($cid) && !isset($table)) {
+    $cid = '*';
+    $wildcard = TRUE;
+    $table = 'cache_page';
+  }
   if (empty($cid) || ($cid == '*' && $wildcard !== TRUE)) {
     // don't do anything if cid is unset. this matches the default drupal behavior...
     if ($wildcard && $cid != '*') {
