diff --git a/src/server/simple-cache.c b/src/server/simple-cache.c
index 9101ebbc70eac94a2d7b23e3f81b4364b8473e47..beca4b96e131f21da174e679622d7cd785bbb0b5 100644
--- a/src/server/simple-cache.c
+++ b/src/server/simple-cache.c
@@ -1,5 +1,5 @@
 /*
- * $Id: simple-cache.c,v 0.21 1992/03/24 17:41:05 ceder Exp $
+ * $Id: simple-cache.c,v 0.22 1992/04/09 09:21:11 ceder Exp $
  * Copyright (C) 1991  Lysator Academic Computer Association.
  *
  * This file is part of the LysKOM server.
@@ -33,7 +33,7 @@
  * New save algorithm by ceder.
  */
 
-static char *rcsid = "$Id: simple-cache.c,v 0.21 1992/03/24 17:41:05 ceder Exp $";
+static char *rcsid = "$Id: simple-cache.c,v 0.22 1992/04/09 09:21:11 ceder Exp $";
 
 
 
@@ -1963,6 +1963,17 @@ free_all_cache (void)
 }
 
 
+/* Is it allowed to delete this node from the cache? It is, unless
+   the node is locked, dirty, or contains a snap-shot.		 */
+
+static Bool
+throwable_p(Cache_node *node)
+{
+    return (node->s.dirty == 0
+	    && node->snap_shot == NULL
+	    && node->lock_cnt == 0);
+}
+
 static void
 limit_pers(void)
 {
@@ -1974,11 +1985,8 @@ limit_pers(void)
     /* Skip first CACHE_PERSONS clean persons. */
     for ( i = 0; node != NULL && i < CACHE_PERSONS; i++ )
     {
-	while ( node != NULL && node->s.dirty == 0
-	       && node->snap_shot == NULL && node->lock_cnt == 0 )
-	{
+	while (node != NULL && !throwable_p(node))
 	    node = node->next;
-	}
 	       
 	if ( node != NULL )
 	    node = node->next;
@@ -1987,8 +1995,7 @@ limit_pers(void)
     /* Delete any remaining clean persons */
     while ( node != NULL )
     {
-	if ( node->s.dirty == 0 && node->snap_shot == NULL
-	    && node->lock_cnt == 0 )
+	if (throwable_p(node))
 	{
 	    unlink_pers_lru(node);
 	    free_person (node->ptr);
@@ -2011,11 +2018,8 @@ limit_conf(void)
     /* Skip first CACHE_CONFERENCES clean confs. */
     for ( i = 0; node != NULL && i < CACHE_CONFERENCES; i++ )
     {
-	while ( node != NULL && node->s.dirty == 0
-	       && node->snap_shot == NULL && node->lock_cnt == 0 )
-	{
+	while (node != NULL && !throwable_p(node))
 	    node = node->next;
-	}
 	       
 	if ( node != NULL )
 	    node = node->next;
@@ -2024,8 +2028,7 @@ limit_conf(void)
     /* Delete any remaining clean confs. */
     while ( node != NULL )
     {
-	if ( node->s.dirty == 0 && node->snap_shot == NULL
-	    && node->lock_cnt == 0 )
+	if (throwable_p(node))
 	{
 	    unlink_conf_lru(node);
 	    free_conference (node->ptr);
@@ -2049,21 +2052,17 @@ limit_text_stat(void)
     /* Skip first CACHE_TEXT_STATS clean text_stats. */
     for ( i = 0; node != NULL && i < CACHE_TEXT_STATS; i++ )
     {
-	while ( node != NULL && node->s.dirty == 0
-	       && node->snap_shot == NULL && node->lock_cnt == 0 )
-	{
+	while (node != NULL && !throwable_p(node))
 	    node = node->next;
-	}
 	       
-	if ( node != NULL )
+	if (node != NULL)
 	    node = node->next;
     }
 
     /* Delete any remaining clean text_stats. */
     while ( node != NULL )
     {
-	if ( node->s.dirty == 0 && node->snap_shot == NULL
-	    && node->lock_cnt == 0 )
+	if (throwable_p(node))
 	{
 	    unlink_text_lru(node);
 	    free_text_stat (node->ptr);