diff --git a/src/interfaces/libpq/fe-protocol2.c b/src/interfaces/libpq/fe-protocol2.c
index 6b909334079d0ab60c994d95df6c004fa47d0986..2a15e19e1d58e22bed4aee15c1f361b35a52b975 100644
--- a/src/interfaces/libpq/fe-protocol2.c
+++ b/src/interfaces/libpq/fe-protocol2.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.2 2003/06/21 21:51:34 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.3 2003/06/21 23:25:38 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1183,15 +1183,30 @@ pqEndcopy2(PGconn *conn)
 	}
 
 	/*
-	 * Trouble. The worst case is that we've lost sync with the backend
-	 * entirely due to application screwup of the copy in/out protocol. To
-	 * recover, reset the connection (talk about using a sledgehammer...)
+	 * Trouble. For backwards-compatibility reasons, we issue the error
+	 * message as if it were a notice (would be nice to get rid of this
+	 * silliness, but too many apps probably don't handle errors from
+	 * PQendcopy reasonably).  Note that the app can still obtain the
+	 * error status from the PGconn object.
 	 */
-	PQclear(result);
-
 	if (conn->errorMessage.len > 0)
+	{
+		/* We have to strip the trailing newline ... pain in neck... */
+		char	svLast = conn->errorMessage.data[conn->errorMessage.len-1];
+
+		if (svLast == '\n')
+			conn->errorMessage.data[conn->errorMessage.len-1] = '\0';
 		PGDONOTICE(conn, conn->errorMessage.data);
+		conn->errorMessage.data[conn->errorMessage.len-1] = svLast;
+	}
 
+	PQclear(result);
+
+	/*
+	 * The worst case is that we've lost sync with the backend
+	 * entirely due to application screwup of the copy in/out protocol. To
+	 * recover, reset the connection (talk about using a sledgehammer...)
+	 */
 	PGDONOTICE(conn, libpq_gettext("lost synchronization with server, resetting connection"));
 
 	/*
diff --git a/src/interfaces/libpq/fe-protocol3.c b/src/interfaces/libpq/fe-protocol3.c
index 05543f8e76dd04d88d395e9a05e3b879c72197e6..6b404c3531b947ecd1a5d34aaeb4d49d16800a4a 100644
--- a/src/interfaces/libpq/fe-protocol3.c
+++ b/src/interfaces/libpq/fe-protocol3.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.2 2003/06/21 21:51:34 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.3 2003/06/21 23:25:38 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1113,7 +1113,15 @@ pqEndcopy3(PGconn *conn)
 	 * error status from the PGconn object.
 	 */
 	if (conn->errorMessage.len > 0)
+	{
+		/* We have to strip the trailing newline ... pain in neck... */
+		char	svLast = conn->errorMessage.data[conn->errorMessage.len-1];
+
+		if (svLast == '\n')
+			conn->errorMessage.data[conn->errorMessage.len-1] = '\0';
 		PGDONOTICE(conn, conn->errorMessage.data);
+		conn->errorMessage.data[conn->errorMessage.len-1] = svLast;
+	}
 
 	PQclear(result);