diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index bbe1cf517cbbf693be0d02c24cd0a84925ab8387..a08db67ff6bdd9925b89163f6c619cbdf4d37c88 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -559,6 +559,10 @@ Mon Apr 12 17:56:14 CEST 1999
 Wed Apr 14 17:59:06 CEST 1999
 
 	- Added simple calculations for array bounds.
+
+Fri Apr 16 18:25:18 CEST 1999
+
+	- Fixed small bug in ECPGfinish().
 	- Set library version to 3.0.0
 	- Set ecpg version to 2.6.0
 
diff --git a/src/interfaces/ecpg/lib/ecpglib.c b/src/interfaces/ecpg/lib/ecpglib.c
index 9fea350eb7115272ec97e5bd66f20809c16e6b19..5314a0a90d3c3f087293ba72bf1f753704bfb941 100644
--- a/src/interfaces/ecpg/lib/ecpglib.c
+++ b/src/interfaces/ecpg/lib/ecpglib.c
@@ -149,26 +149,21 @@ ECPGfinish(struct connection * act)
 		PQfinish(act->connection);
 		/* remove act from the list */
 		if (act == all_connections)
-		{
 			all_connections = act->next;
-			free(act->name);
-			free(act);
-		}
 		else
 		{
 			struct connection *con;
 
 			for (con = all_connections; con->next && con->next != act; con = con->next);
 			if (con->next)
-			{
 				con->next = act->next;
-				free(act->name);
-				free(act);
-			}
 		}
 
 		if (actual_connection == act)
 			actual_connection = all_connections;
+			
+		free(act->name);
+		free(act);
 	}
 	else
 		ECPGlog("ECPGfinish: called an extra time.\n");
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index b9d5bdd79e92bf46b0baadf2cc4063ed6604624f..aa7b185265280fe678a0b8f3fe118b7eb4d5c064 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -533,6 +533,12 @@ cppline		{space}*#.*(\\{space}*\n)*\n*
 <C>";"	      	        { return(';'); }
 <C>","	      	        { return(','); }
 <C>"*"	      	        { return('*'); }
+<C>"%"	      	        { return('%'); }
+<C>"/"	      	        { return('/'); }
+<C>"+"	      	        { return('+'); }
+<C>"-"	      	        { return('-'); }
+<C>"("	      	        { return('('); }
+<C>")"	      	        { return(')'); }
 <C>{space}		{ ECHO; }
 <C>\{			{ return('{'); }
 <C>\}			{ return('}'); }
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index bb5faeb75ecbbc5f5dddc16609356a9e7842d48c..c46d68383cd196499861583774be5a501eb2b0d1 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -3218,12 +3218,12 @@ nest_array_bounds:	'[' ']' nest_array_bounds
 
 Iresult:	Iconst			{ $$ = atol($1); }
 	|	'(' Iresult ')'		{ $$ = $2; }
-	|	Iresult '+' Iresult	{ $$ = $1 + $3};
-	|	Iresult '-' Iresult	{ $$ = $1 - $3};
-	|	Iresult '*' Iresult	{ $$ = $1 * $3};
-	|	Iresult '/' Iresult	{ $$ = $1 / $3};
-	|	Iresult '%' Iresult	{ $$ = $1 % $3};
-
+	|	Iresult '+' Iresult	{ $$ = $1 + $3; }
+	|	Iresult '-' Iresult	{ $$ = $1 - $3; }
+	|	Iresult '*' Iresult	{ $$ = $1 * $3; }
+	|	Iresult '/' Iresult	{ $$ = $1 / $3; }
+	|	Iresult '%' Iresult	{ $$ = $1 % $3; }
+	;
 
 
 /*****************************************************************************
diff --git a/src/interfaces/ecpg/test/test2.pgc b/src/interfaces/ecpg/test/test2.pgc
index 954498d01273dcbaf41db4df75f51f65b7b5f7c7..360dee3b34f6d3d904d4f0ca0da96ac217805fc1 100644
--- a/src/interfaces/ecpg/test/test2.pgc
+++ b/src/interfaces/ecpg/test/test2.pgc
@@ -40,7 +40,7 @@ exec sql end declare section;
                 ECPGdebug(1, dbgs);
 
 	strcpy(msg, "connect");
-	exec sql connect to unix:postgresql://localhost:5432/mm; 
+	exec sql connect to unix:postgresql://localhost:5432/mm;
 
 	strcpy(msg, "create");
 	exec sql create table meskes(name char(8), born integer, age smallint, married date, children integer);