diff --git a/ChangeLog b/ChangeLog
index 9a02343..e3b3166 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+1999-09-23  Paul D. Smith  <psmith@gnu.org>
+
+	* Version 3.78.1 released.
+
+	* make.texinfo: Update version/date stamp.
+
+	* main.c (main): Argh.  For some reason we were closing _all_ the
+	jobserver pipes before we re-exec'd due to changed makefiles.
+	This means that any re-exec got a "jobserver unavailable" error :-/.
+	I can't believe we didn't notice this before.
+
 1999-09-22  Paul D. Smith  <psmith@gnu.org>
 
 	* Version 3.78 released.
@@ -764,9 +775,9 @@
 	a bit saying whether we've seen this target in this pass or not.
 	(update_goal_chain): Initially set the global considered toggle to
 	1, since all targets initialize their boolean to 0.  At the end of
-	each pass, toggle the global considered variable.  * filedef.h
-	(struct file): Per-file considered toggle bit.  * file.c: New
-	global toggle variable considered.
+	each pass, toggle the global considered variable.
+	* filedef.h (struct file): Per-file considered toggle bit.
+	* file.c: New global toggle variable considered.
 
 1999-04-05  Paul D. Smith  <psmith@gnu.org>
 
diff --git a/configure.in b/configure.in
index 2768653..6cb935f 100644
--- a/configure.in
+++ b/configure.in
@@ -3,7 +3,7 @@
 AC_PREREQ(2.13)dnl		dnl Minimum Autoconf version required.
 AC_INIT(vpath.c)dnl		dnl A distinctive file to look for in srcdir.
 
-AM_INIT_AUTOMAKE(make, 3.78)
+AM_INIT_AUTOMAKE(make, 3.78.1)
 AM_CONFIG_HEADER(config.h)
 
 dnl Regular configure stuff
diff --git a/main.c b/main.c
index ec92f01..4065265 100644
--- a/main.c
+++ b/main.c
@@ -1700,12 +1700,7 @@
 	  fflush (stdout);
 	  fflush (stderr);
 
-          /* Close the jobserver pipes if we opened any.  */
-          if (job_fds[0] >= 0)
-            {
-              close (job_fds[0]);
-              close (job_fds[1]);
-            }
+          /* Close the dup'd jobserver pipe if we opened one.  */
           if (job_rfd >= 0)
             close (job_rfd);
 
diff --git a/make.texinfo b/make.texinfo
index 8334526..fb15117 100644
--- a/make.texinfo
+++ b/make.texinfo
@@ -8,10 +8,10 @@
 @c FSF publishers: format makebook.texi instead of using this file directly.
 
 @set RCSID $Id$
-@set EDITION 0.53
-@set VERSION 3.78
-@set UPDATED 14 April 1999
-@set UPDATE-MONTH April 1999
+@set EDITION 0.54
+@set VERSION 3.78.1
+@set UPDATED 09 September 1999
+@set UPDATE-MONTH September 1999
 @comment The ISBN number might need to change on next publication.
 @set ISBN 1-882114-80-9 @c CHANGE THIS BEFORE PRINTING AGAIN! --psmith 16jul98
 
diff --git a/tests/ChangeLog b/tests/ChangeLog
index b40612f..f8f6700 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,10 @@
+1999-09-23  Paul D. Smith  <psmith@gnu.org>
+
+	* scripts/features/parallelism: Add a check to ensure that the
+	jobserver works when we re-invoke.  Also cleaned up the tests a
+	little, reducing the number of rules we use so the test won't need
+	as many "sleep" commands.
+
 1999-09-16  Paul D. Smith  <psmith@gnu.org>
 
 	* scripts/features/reinvoke: Remove invocations of "touch" in
diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism
index 323eb5c..cd75392 100644
--- a/tests/scripts/features/parallelism
+++ b/tests/scripts/features/parallelism
@@ -3,7 +3,7 @@
 $description = "Test parallelism (-j) option.";
 
 
-$details = "This test creates a makefile with three double-colon default
+$details = "This test creates a makefile with two double-colon default
 rules.  The first rule has a series of sleep and echo commands
 intended to run in series.  The second and third have just an
 echo statement.  When make is called in this test, it is given
@@ -29,48 +29,72 @@
 open(MAKEFILE,"> $makefile");
 
 print MAKEFILE <<"EOF";
-all : def_1 def_5 def_6
-def_1 :
-\t\@$sleep_command 3 ; echo ONE
-\t\@echo TWO
-\t\@$sleep_command 1 ; echo THREE
-\t\@echo FOUR
-def_5 :
-\t\@echo FIVE
-def_6 :
-\t\@$sleep_command 1 ; echo SIX
-
+all : def_1 def_2 def_3
+def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWO
+def_2 : ; \@$sleep_command 2 ; echo THREE
+def_3 : ; \@$sleep_command 1 ; echo FOUR
 EOF
 
 close(MAKEFILE);
 
 &run_make_with_options($makefile, "-j 4", &get_logfile);
-$answer = "FIVE\nSIX\nONE\nTWO\nTHREE\nFOUR\n";
+$answer = "ONE\nFOUR\nTHREE\nTWO\n";
 &compare_output($answer, &get_logfile(1));
 
 
-# Test parallelism with included files
+# Test parallelism with included files.  Here we sleep/echo while
+# building the included files, to test that they are being built in
+# parallel.
 
 $makefile2 = &get_tmpfile;
 
 open(MAKEFILE,"> $makefile2");
 
-print MAKEFILE <<'EOF';
-all: 1 2 3; @echo success
+print MAKEFILE <<"EOF";
+all: 1 2; \@echo success
 
--include 1.inc 2.inc 3.inc
+-include 1.inc 2.inc
 
-1.inc: ; @sleep 1; echo 1; echo "1: ; @sleep 2; echo $@ has been included" > $@
-2.inc: ; @sleep 2; echo 2; echo "2: ; @echo $@ has been included" > $@
-3.inc: ; @echo 3; echo "3: ; @sleep 1; echo $@ has been included" > $@
+1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo "1: ; \@echo ONE; $sleep_command 2; echo TWO" > \$\@
+2.inc: ; \@$sleep_command 1; echo THREE.inc; echo "2: ; \@$sleep_command 1; echo THREE" > \$\@
 EOF
 
 close(MAKEFILE);
 
 &run_make_with_options("$makefile2", "-j 4", &get_logfile);
-$answer = "3\n1\n2\n2.inc has been included\n3.inc has been included\n1.inc has been included\nsuccess\n";
+$answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n";
 &compare_output($answer, &get_logfile(1));
 
-unlink('1.inc', '2.inc', '3.inc');
+unlink('1.inc', '2.inc');
+
+
+# Test parallelism with included files--this time recurse first and make
+# sure the jobserver works.
+
+$makefile3 = &get_tmpfile;
+
+open(MAKEFILE,"> $makefile3");
+
+print MAKEFILE <<"EOF";
+recurse: ; \@\$(MAKE) --no-print-directory -f $makefile3 INC=yes all
+
+all: 1 2; \@echo success
+
+INC = no
+ifeq (\$(INC),yes)
+-include 1.inc 2.inc
+endif
+
+1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo "1: ; \@echo ONE; $sleep_command 2; echo TWO" > \$\@
+2.inc: ; \@$sleep_command 1; echo THREE.inc; echo "2: ; \@$sleep_command 1; echo THREE" > \$\@
+EOF
+
+close(MAKEFILE);
+
+&run_make_with_options("$makefile3", "-j 4", &get_logfile);
+$answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n";
+&compare_output($answer, &get_logfile(1));
+
+unlink('1.inc', '2.inc');
 
 1;
