diff --git a/src/man.c b/src/man.c
index b3d13d1..030a5d1 100644
--- a/src/man.c
+++ b/src/man.c
@@ -991,11 +991,17 @@ static char *get_preprocessors_from_file (pipeline *decomp, int prefixes)
if (!strncmp (line, PP_COOKIE, 4)) {
const char *newline = strchr (line, '\n');
- if (newline)
- return xstrndup (line + 4, newline - (line + 4));
- else
- return xstrdup (line + 4);
+ if (newline) {
+ char *ret = xstrndup (line + 4, newline - (line + 4));
+ free (line);
+ return ret;
+ } else {
+ char *ret = xstrdup (line + 4);
+ free (line);
+ return ret;
+ }
}
+ free (line);
return NULL;
}
@@ -2401,6 +2407,7 @@ static int display (const char *dir, const char *man_file,
if (!found) {
pipeline_free (format_cmd);
pipeline_free (decomp);
+ free (formatted_encoding);
return found;
}
diff --git a/src/zsoelim.c b/src/zsoelim.c
index bf5c8ff..6a484c4 100644
--- a/src/zsoelim.c
+++ b/src/zsoelim.c
@@ -2528,6 +2528,7 @@ int zsoelim_open_file (const char *filename, gl_list_t manpathlist,
if (decomp) {
NAME = xstrdup (found_name);
gl_list_free (names);
+ free (name);
goto out;
}
} GL_LIST_FOREACH_END (names);
diff --git a/src/zsoelim.l b/src/zsoelim.l
index a8a7e3b..3cb552b 100644
--- a/src/zsoelim.l
+++ b/src/zsoelim.l
@@ -473,6 +473,7 @@ int zsoelim_open_file (const char *filename, gl_list_t manpathlist,
if (decomp) {
NAME = xstrdup (found_name);
gl_list_free (names);
+ free (name);
goto out;
}
} GL_LIST_FOREACH_END (names);