diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index b3fbd4b19e45b038661b880514272f1472acf380..cb56f33c83c3942ed806e035c0ce85e1d0056a31 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.72 2000/12/03 20:45:36 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.73 2000/12/06 17:25:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -33,6 +33,7 @@
 #include "commands/copy.h"
 #include "libpq/libpq.h"
 #include "libpq/pqformat.h"
+#include "miscadmin.h"
 #include "storage/proc.h"
 #include "tcop/tcopprot.h"
 #include "utils/memutils.h"
diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h
index ad1643b69086f8db36668384eff31126f05f42b1..acb820497309d4fea4ba2f876c84fc583a18c57c 100644
--- a/src/include/utils/elog.h
+++ b/src/include/utils/elog.h
@@ -7,15 +7,13 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: elog.h,v 1.19 2000/12/03 10:27:29 vadim Exp $
+ * $Id: elog.h,v 1.20 2000/12/06 17:25:45 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #ifndef ELOG_H
 #define ELOG_H
 
-#include "miscadmin.h"
-
 #define NOTICE	0				/* random info - no special action */
 #define ERROR	(-1)			/* user error - return to known state */
 #define FATAL	1				/* fatal error - abort process */
@@ -30,23 +28,29 @@ extern int Use_syslog;
 #endif
 
 /*
- * If StopIfError > 0 signal handlers don't do
- * elog(ERROR|FATAL) but remember what action was
- * required with QueryCancel & ExitAfterAbort
+ * If StopIfError > 0 signal handlers mustn't do
+ * elog(ERROR|FATAL), instead remember what action is
+ * required with QueryCancel & ExitAfterAbort.
  */
+extern uint32 StopIfError;		/* duplicates access/xlog.h */
+extern bool QueryCancel;		/* duplicates miscadmin.h */
 extern bool	ExitAfterAbort;
-#define	START_CRIT_CODE		StopIfError++
-#define END_CRIT_CODE		\
-	if (!StopIfError)\
-		elog(STOP, "Not in critical section");\
-	StopIfError--;\
-	if (!StopIfError && QueryCancel)\
-	{\
-		if (ExitAfterAbort)\
-			elog(FATAL, "The system is shutting down");\
-		else\
-			elog(ERROR, "Query was cancelled.");\
-	}
+
+#define	START_CRIT_CODE		(StopIfError++)
+
+#define END_CRIT_CODE	\
+	do { \
+		if (!StopIfError) \
+			elog(STOP, "Not in critical section"); \
+		StopIfError--; \
+		if (!StopIfError && QueryCancel) \
+		{ \
+			if (ExitAfterAbort) \
+				elog(FATAL, "The system is shutting down"); \
+			else \
+				elog(ERROR, "Query was cancelled."); \
+		} \
+	} while(0)
 
 extern bool Log_timestamp;
 extern bool Log_pid;