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; + } + } }