Tim Waugh d3d4e2
diff -up a2ps-4.14/lib/encoding.c.resource-leak a2ps-4.14/lib/encoding.c
Tim Waugh d3d4e2
--- a2ps-4.14/lib/encoding.c.resource-leak	2011-08-10 16:02:26.244905923 +0100
Tim Waugh d3d4e2
+++ a2ps-4.14/lib/encoding.c	2011-08-10 16:41:39.578353192 +0100
Tim Waugh d3d4e2
@@ -554,7 +554,7 @@ encoding_resolve_font_substitute (struct
Tim Waugh d3d4e2
   if (!res)
Tim Waugh d3d4e2
     {
Tim Waugh d3d4e2
       if (encoding->default_font)
Tim Waugh d3d4e2
-	res = encoding->default_font;
Tim Waugh d3d4e2
+	res = xstrdup (encoding->default_font);
Tim Waugh d3d4e2
       else
Tim Waugh d3d4e2
 	error (1, 0, "Cannot find font %s, nor any substitute",
Tim Waugh d3d4e2
 	       font_name);
Tim Waugh d3d4e2
@@ -976,6 +976,7 @@ dump_encoding_setup (FILE * stream,
Tim Waugh d3d4e2
 							 font_names [i]);
Tim Waugh d3d4e2
       if (!font_is_to_reencode (job, real_font_name))
Tim Waugh d3d4e2
 	da_remove_at (encoding->font_names_used, i, (da_map_func_t) free);
Tim Waugh d3d4e2
+      free (real_font_name);
Tim Waugh d3d4e2
     }
Tim Waugh d3d4e2
 
Tim Waugh d3d4e2
   /* The number of fonts that, finally, have to be encoded
Tim Waugh d3d4e2
@@ -992,10 +993,16 @@ dump_encoding_setup (FILE * stream,
Tim Waugh d3d4e2
   fprintf (stream, "/%sdict %d dict begin\n", encoding->key,
Tim Waugh d3d4e2
 	   (encoding->composite_flag == true)? nb+nb+ns:nb+ns);
Tim Waugh d3d4e2
   for (i = 0 ; i < nb ; i++)
Tim Waugh d3d4e2
-    fprintf (stream, "  /f%s %sEncoding /%s reencode_font\n",
Tim Waugh d3d4e2
-	     font_names [i],
Tim Waugh d3d4e2
-	     encoding->name,
Tim Waugh d3d4e2
-	     encoding_resolve_font_substitute (job, encoding, font_names [i]));
Tim Waugh d3d4e2
+    {
Tim Waugh d3d4e2
+      char *real_font = encoding_resolve_font_substitute (job, encoding,
Tim Waugh d3d4e2
+							  font_names [i]);
Tim Waugh d3d4e2
+      fprintf (stream, "  /f%s %sEncoding /%s reencode_font\n",
Tim Waugh d3d4e2
+	       font_names [i],
Tim Waugh d3d4e2
+	       encoding->name,
Tim Waugh d3d4e2
+	       real_font);
Tim Waugh d3d4e2
+      free (real_font);
Tim Waugh d3d4e2
+    }
Tim Waugh d3d4e2
+	     
Tim Waugh d3d4e2
 
Tim Waugh d3d4e2
   /* Slant font setting */
Tim Waugh d3d4e2
   for (i = 0 ; encoding->slantfont[i].name ; i++ )
Tim Waugh d3d4e2
@@ -1166,6 +1173,7 @@ encoding_build_faces_wx (a2ps_job * job,
Tim Waugh d3d4e2
 				   encoding->vector,
Tim Waugh d3d4e2
 				   encoding->faces_wx [face]);
Tim Waugh d3d4e2
 
Tim Waugh d3d4e2
+      free (true_font_name);
Tim Waugh d3d4e2
       if (encoding->composite_flag)
Tim Waugh d3d4e2
 	{
Tim Waugh d3d4e2
 	  encoding->composite_raito[i] =