X-Git-Url: http://www.privoxy.org/gitweb/misc.html?a=blobdiff_plain;f=list.c;h=a2d7ff6bc5758d30a4c4b9f02096fff10af73817;hb=23dcf9be0e91645fe420fdf0c699f99d457d3fc9;hp=c234414dfb4ef5824200b2013f2970fd6885348f;hpb=bbf700a052ad341be68a7ad2bb61080a015d3184;p=privoxy.git
diff --git a/list.c b/list.c
index c234414d..a2d7ff6b 100644
--- a/list.c
+++ b/list.c
@@ -1,12 +1,11 @@
-const char list_rcs[] = "$Id: list.c,v 1.30 2014/10/18 11:31:52 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/list.c,v $
*
* Purpose : Declares functions to handle lists.
*
- * Copyright : Written by and Copyright (C) 2001-2007 the SourceForge
- * Privoxy team. http://www.privoxy.org/
+ * Copyright : Written by and Copyright (C) 2001-2007 members of the
+ * Privoxy team. https://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
@@ -46,7 +45,7 @@ const char list_rcs[] = "$Id: list.c,v 1.30 2014/10/18 11:31:52 fabiankeil Exp $
#endif
#include
-#if !defined(_WIN32) && !defined(__OS2__)
+#if !defined(_WIN32)
#include
#endif
@@ -56,11 +55,9 @@ const char list_rcs[] = "$Id: list.c,v 1.30 2014/10/18 11:31:52 fabiankeil Exp $
#include "list.h"
#include "miscutil.h"
-const char list_h_rcs[] = LIST_H_VERSION;
-
-
+#ifndef NDEBUG
static int list_is_valid (const struct list *the_list);
-
+#endif
/*********************************************************************
*
@@ -127,6 +124,7 @@ void destroy_list (struct list *the_list)
}
+#ifndef NDEBUG
/*********************************************************************
*
* Function : list_is_valid
@@ -134,7 +132,7 @@ void destroy_list (struct list *the_list)
* Description : Check that a string list is valid. The intended
* usage is "assert(list_is_valid(the_list))".
* Currently this checks that "the_list->last"
- * is correct, and that the list dosn't contain
+ * is correct, and that the list doesn't contain
* circular references. It is likely to crash if
* it's passed complete garbage.
*
@@ -146,11 +144,6 @@ void destroy_list (struct list *the_list)
*********************************************************************/
static int list_is_valid (const struct list *the_list)
{
- /*
- * If you don't want this check, just change the line below
- * from "#if 1" to "#if 0".
- */
-#if 1
const struct list_entry *cur_entry;
const struct list_entry *last_entry = NULL;
int entry = 0;
@@ -203,10 +196,10 @@ static int list_is_valid (const struct list *the_list)
}
return (the_list->last == last_entry);
-#else
- return 1;
-#endif
+
}
+#endif /* ndef NDEBUG */
+
/*********************************************************************
*
@@ -1064,7 +1057,7 @@ jb_err unmap(struct map *the_map, const char *name)
assert(the_map);
assert(name);
- last_entry = the_map->first;
+ last_entry = NULL;
for (cur_entry = the_map->first; cur_entry != NULL; cur_entry = cur_entry->next)
{
@@ -1096,7 +1089,11 @@ jb_err unmap(struct map *the_map, const char *name)
freez(cur_entry->name);
freez(cur_entry->value);
freez(cur_entry);
-
+ if (last_entry == NULL)
+ {
+ /* The map only had a single entry which has just been removed. */
+ break;
+ }
cur_entry = last_entry;
}
else
@@ -1120,7 +1117,7 @@ jb_err unmap(struct map *the_map, const char *name)
* 2 : name = name parameter to look for
*
* Returns : the value if found, else the empty string.
- * Return value is alloced as part of the map, so
+ * Return value is allocated as part of the map, so
* it is freed when the map is destroyed. Caller
* must not free or modify it.
*