diff --git a/e2fsck/ChangeLog b/e2fsck/ChangeLog
index 59db2cc..7ef240e 100644
--- a/e2fsck/ChangeLog
+++ b/e2fsck/ChangeLog
@@ -1,3 +1,20 @@
+1998-09-02  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+	* problem.c: Add PR_3_NO_DIRINFO error code.
+
+	* super.c (check_super_value): Rename min and max to min_val and
+		max_val to avoid possible cpp macro conflicts.
+
+	* pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
+		possible cpp macro conflicts.
+	
+	* pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
+		cpp macro conflicts.
+		(check_directory): Fix logic to avoid possible core dump
+		in the case of ext2fs_get_dir_info returning NULL.  (By
+		the time we get here, it should never happen, but...).
+		Also simply/streamline the control flow of the function.
+
 1998-08-17  Theodore Ts'o  <tytso@rsts-11.mit.edu>
 
 	* unix.c (check_if_skip): Move the "not cleanly mounted" check
diff --git a/e2fsck/pass3.c b/e2fsck/pass3.c
index c87ebd9..0700698 100644
--- a/e2fsck/pass3.c
+++ b/e2fsck/pass3.c
@@ -64,7 +64,7 @@
 #endif
 	struct problem_context	pctx;
 	struct dir_info	*dir;
-	unsigned long max, count;
+	unsigned long maxdirs, count;
 
 #ifdef RESOURCE_TRACK
 	init_resource_track(&rtrack);
@@ -109,16 +109,16 @@
 
 	ext2fs_mark_inode_bitmap(inode_done_map, EXT2_ROOT_INO);
 
-	max = e2fsck_get_num_dirinfo(ctx);
+	maxdirs = e2fsck_get_num_dirinfo(ctx);
 	count = 1;
 
 	if (ctx->progress)
-		if ((ctx->progress)(ctx, 3, 0, max))
+		if ((ctx->progress)(ctx, 3, 0, maxdirs))
 			goto abort_exit;
 	
 	for (i=0; (dir = e2fsck_dir_info_iter(ctx, &i)) != 0;) {
 		if (ctx->progress)
-			if ((ctx->progress)(ctx, 3, count++, max))
+			if ((ctx->progress)(ctx, 3, count++, maxdirs))
 				goto abort_exit;
 		if (ext2fs_test_inode_bitmap(ctx->inode_dir_map, dir->ino))
 			check_directory(ctx, dir, &pctx);
@@ -256,17 +256,19 @@
 	ext2_filsys fs = ctx->fs;
 	struct dir_info *p = dir;
 
+	if (!p)
+		return;
+
 	ext2fs_clear_inode_bitmap(inode_loop_detect);
-	while (p) {
-		/*
-		 * If we find a parent which we've already checked,
-		 * then stop; we know it's either already connected to
-		 * the directory tree, or it isn't but the user has
-		 * already told us he doesn't want us to reconnect the
-		 * disconnected subtree.
-		 */
-		if (ext2fs_test_inode_bitmap(inode_done_map, p->ino))
-			goto check_dot_dot;
+
+	/*
+	 * Keep going until we find a parent which we've already
+	 * checked.  We know it's either already connected to the
+	 * directory tree, or it isn't but the user has already told
+	 * us he doesn't want us to reconnect the disconnected
+	 * subtree.
+	 */
+	while (!ext2fs_test_inode_bitmap(inode_done_map, p->ino)) {
 		/*
 		 * Mark this inode as being "done"; by the time we
 		 * return from this function, the inode we either be
@@ -275,6 +277,7 @@
 		 * lost+found.
 		 */
 		ext2fs_mark_inode_bitmap(inode_done_map, p->ino);
+
 		/*
 		 * If this directory doesn't have a parent, or we've
 		 * seen the parent once already, then offer to
@@ -282,23 +285,25 @@
 		 */
 		if (!p->parent ||
 		    (ext2fs_test_inode_bitmap(inode_loop_detect,
-					      p->parent)))
+					      p->parent))) {
+			pctx->ino = p->ino;
+			if (fix_problem(ctx, PR_3_UNCONNECTED_DIR, pctx)) {
+				if (e2fsck_reconnect_file(ctx, p->ino))
+					ext2fs_unmark_valid(fs);
+				else {
+					p->parent = lost_and_found;
+					fix_dotdot(ctx, p, lost_and_found);
+				}
+			}
 			break;
+		}
 		ext2fs_mark_inode_bitmap(inode_loop_detect,
 					 p->parent);
+		pctx->ino = p->parent;
 		p = e2fsck_get_dir_info(ctx, p->parent);
-	}
-	/*
-	 * If we've reached here, we've hit a detached directory
-	 * inode; offer to reconnect it to lost+found.
-	 */
-	pctx->ino = p->ino;
-	if (fix_problem(ctx, PR_3_UNCONNECTED_DIR, pctx)) {
-		if (e2fsck_reconnect_file(ctx, p->ino))
-			ext2fs_unmark_valid(fs);
-		else {
-			p->parent = lost_and_found;
-			fix_dotdot(ctx, p, lost_and_found);
+		if (!p) {
+			fix_problem(ctx, PR_3_NO_DIRINFO, pctx);
+			return;
 		}
 	}
 
@@ -306,7 +311,6 @@
 	 * Make sure that .. and the parent directory are the same;
 	 * offer to fix it if not.
 	 */
-check_dot_dot:
 	if (dir->parent != dir->dotdot) {
 		pctx->ino = dir->ino;
 		pctx->ino2 = dir->dotdot;
diff --git a/e2fsck/pass4.c b/e2fsck/pass4.c
index f65785a..adde764 100644
--- a/e2fsck/pass4.c
+++ b/e2fsck/pass4.c
@@ -85,7 +85,7 @@
 #endif
 	struct problem_context	pctx;
 	__u16	link_count, link_counted;
-	int	group, max;
+	int	group, maxgroup;
 	
 #ifdef RESOURCE_TRACK
 	init_resource_track(&rtrack);
@@ -101,16 +101,16 @@
 		fix_problem(ctx, PR_4_PASS_HEADER, &pctx);
 
 	group = 0;
-	max = fs->group_desc_count;
+	maxgroup = fs->group_desc_count;
 	if (ctx->progress)
-		if ((ctx->progress)(ctx, 4, 0, max))
+		if ((ctx->progress)(ctx, 4, 0, maxgroup))
 			return;
 	
 	for (i=1; i <= fs->super->s_inodes_count; i++) {
 		if ((i % fs->super->s_inodes_per_group) == 0) {
 			group++;
 			if (ctx->progress)
-				if ((ctx->progress)(ctx, 4, group, max))
+				if ((ctx->progress)(ctx, 4, group, maxgroup))
 					return;
 		}
 		if (i == EXT2_BAD_INO ||
diff --git a/e2fsck/problem.c b/e2fsck/problem.c
index f996b9b..d6f6774 100644
--- a/e2fsck/problem.c
+++ b/e2fsck/problem.c
@@ -787,6 +787,11 @@
 	  "Cannot proceed without a @r.\n",
 	  PROMPT_NONE, PR_FATAL },  
 
+	/* Internal error: couldn't find dir_info */
+	{ PR_3_NO_DIRINFO,
+	  "Internal error: couldn't find dir_info for %i.\n",
+	  PROMPT_NONE, PR_FATAL },
+
 	/* Pass 4 errors */
 	
 	/* Pass 4: Checking reference counts */
diff --git a/e2fsck/problem.h b/e2fsck/problem.h
index fdc9d2d..0f16ba6 100644
--- a/e2fsck/problem.h
+++ b/e2fsck/problem.h
@@ -472,6 +472,9 @@
 /* Cannot proceed without a root inode. */
 #define PR_3_NO_ROOT_INODE_ABORT	0x030015
 
+/* Internal error: couldn't find dir_info */
+#define PR_3_NO_DIRINFO			0x020016
+
 /*
  * Pass 4 errors
  */
diff --git a/e2fsck/super.c b/e2fsck/super.c
index f5dc7f2..ce33c3a 100644
--- a/e2fsck/super.c
+++ b/e2fsck/super.c
@@ -24,12 +24,12 @@
 
 static void check_super_value(e2fsck_t ctx, const char *descr,
 			      unsigned long value, int flags,
-			      unsigned long min, unsigned long max)
+			      unsigned long min_val, unsigned long max_val)
 {
 	struct		problem_context pctx;
 
-	if (((flags & MIN_CHECK) && (value < min)) ||
-	    ((flags & MAX_CHECK) && (value > max))) {
+	if (((flags & MIN_CHECK) && (value < min_val)) ||
+	    ((flags & MAX_CHECK) && (value > max_val))) {
 		clear_problem_context(&pctx);
 		pctx.num = value;
 		pctx.str = descr;
@@ -57,7 +57,7 @@
 	blk_t	first_block, last_block;
 	struct ext2fs_sb *s = (struct ext2fs_sb *) fs->super;
 	blk_t	blocks_per_group = fs->super->s_blocks_per_group;
-	int	i;
+	dgrp_t	i;
 	blk_t	should_be;
 	struct problem_context	pctx;
 
