--- a/applyfilter.c
+++ b/applyfilter.c
@@ -71,14 +71,12 @@ static int applyfilter(const char *name, struct newsgroup *g,
unsigned long *kept, unsigned long *deleted)
{
static size_t lsize = MAXHEADERSIZE + 1;
- static char *l;
+ char *l;
struct stat st;
int score, fd;
struct utimbuf u;
unsigned long n;
- l = (char *)critmalloc(lsize, "Space for article");
-
if (stat(name, &st)) {
ln_log(LNLOG_SNOTICE, LNLOG_CARTICLE,
"cannot stat file \"%s\" in newsgroup %s: %m",
@@ -97,6 +95,8 @@ static int applyfilter(const char *name, struct newsgroup *g,
return 0;
}
+ l = (char *)critmalloc(lsize, "Space for article");
+
if((fd = open(name, O_RDONLY)) >= 0)
{
int ret;
@@ -167,6 +167,9 @@ static int applyfilter(const char *name, struct newsgroup *g,
ln_log(LNLOG_SERR, LNLOG_CARTICLE,
"could not open file \"%s\" in newsgroup %s\n",
name, g->name);
+
+ free(l);
+
return 0;
}
|