diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index aacd2e26d0dffab7734e5e62c2bdfc018cfd34de..28aaca24e672ebf3b5e47c85d6defe2cd3e28fe5 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -2203,4 +2203,9 @@ Sun, 27 May 2007 13:14:39 +0200
 
 	- Changed variable test to not run into infinite loops on backend
 	  errors.
+
+Mon, 11 Jun 2007 13:59:57 +0200
+
+	- Fixed memory leak in descriptor code.
+	- Made ecpg delete output file in case of an error.
 	- Set ecpg version to 4.3.1.
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index 80dc3765827858c22e517302e4e3401df464cbba..e4bd74f38c401ab7c335f409db19ffcf378f4b66 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -1,10 +1,11 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.344 2007/06/11 11:52:08 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.345 2007/06/11 12:01:23 meskes Exp $ */
 
 /* Copyright comment */
 %{
 #include "postgres_fe.h"
 
 #include "extern.h"
+#include <unistd.h>
 
 /* Location tracking support --- simpler than bison's default */
 #define YYLLOC_DEFAULT(Current, Rhs, N) \
@@ -101,8 +102,8 @@ mmerror(int error_code, enum errortype type, char * error, ...)
 		case ET_FATAL:
 			fclose(yyin);
 			fclose(yyout);
-			if (unlink(output_filename) != 0)
-				fprintf(stderr, "Could not remove ourput file %s!\n", output_filename);
+			if (unlink(output_filename) != 0 && *output_filename != '-')
+				fprintf(stderr, "Could not remove output file %s!\n", output_filename);
 			exit(error_code);
 	}
 }