diff --git a/src/modules/image/image.c b/src/modules/image/image.c
index 3cf08c18b2e155aecb2d4c9bf6787d5d6e20c246..da1fc128fcb90abeaa0d71e4800b537e3ce43bc2 100644
--- a/src/modules/image/image.c
+++ b/src/modules/image/image.c
@@ -1777,7 +1777,11 @@ void init_image_efuns(void) {}
 
 void exit_image(void) 
 {
-  free_program(image_program);
+  if(image_program)
+  {
+    free_program(image_program);
+    image_program=0;
+  }
   exit_font();
 }
 
diff --git a/src/modules/spider/http_parse.c b/src/modules/spider/http_parse.c
index 086347f749dad449f8f2b823b795506f735953ec..31ba31c1f131226488f061426cc56f1cfbb3d8c1 100644
--- a/src/modules/spider/http_parse.c
+++ b/src/modules/spider/http_parse.c
@@ -320,3 +320,12 @@ void init_parse_program()
    feed_program = end_c_program("/precompiled/http_parse");
    feed_program->refs++;
 }
+
+void exit_parse_program()
+{
+  if(feed_program)
+  {
+    free_program(feed_program);
+    feed_program=0;
+  }
+}
diff --git a/src/modules/spider/spider.c b/src/modules/spider/spider.c
index 97991916e00a1c69a674f451a744d6b81f1d0a80..1f9885255bf48e3bf9db577b8a3562a46d9d3b23 100644
--- a/src/modules/spider/spider.c
+++ b/src/modules/spider/spider.c
@@ -1670,15 +1670,28 @@ void init_spider_programs()
    streamed_parser = end_c_program( "/precompiled/streamed_parser" );
    streamed_parser->refs++;
 
-
    init_parse_program(); /* HTTP parser */
 }
 
 void exit_spider(void)
 {
   int i;
+
+  exit_parse_program();
+
+  if(streamed_parser)
+  {
+    free_program(streamed_parser);
+    streamed_parser=0;
+  }
+
   for(i=0; i<MAX_OPEN_FILEDESCRIPTORS; i++)
+  {
     if(fd_marks[i])
+    {
       free_string(fd_marks[i]);
+      fd_marks[i]=0;
+    }
+  }
 }