From fef80fce5523ebe151aedee1e1ef8efd2a86f1fe Mon Sep 17 00:00:00 2001
From: Christopher Faylor <me@cgf.cx>
Date: Thu, 15 Sep 2005 00:31:42 +0000
Subject: [PATCH] * spawn.cc (av::fixup): Avoid breaking out of the wrong
 "loop".

---
 winsup/cygwin/ChangeLog |  4 ++++
 winsup/cygwin/spawn.cc  | 37 ++++++++++++++++++-------------------
 2 files changed, 22 insertions(+), 19 deletions(-)

diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index dfb19cd57..e1536d00f 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2005-09-14  Christopher Faylor  <cgf@timesys.com>
+
+	* spawn.cc (av::fixup): Avoid breaking out of the wrong "loop".
+
 2005-09-14  Christopher Faylor  <cgf@timesys.com>
 
 	* hookapi.cc (hook_or_detect_cygwin): Simplify very slightly.
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
index f82cce095..73c148e24 100644
--- a/winsup/cygwin/spawn.cc
+++ b/winsup/cygwin/spawn.cc
@@ -1047,25 +1047,24 @@ av::fixup (child_info_types chtype, const char *prog_arg, path_conv& real_path,
       if (!buf)
 	goto err;
 
-      do
-	{
-	  myfault efault;
-	  if (efault.faulted ())
-	    {
-	      UnmapViewOfFile (buf);
-	      real_path.set_cygexec (false);
-	      break;
-	    }
-	  if (buf[0] == 'M' && buf[1] == 'Z')
-	    {
-	      unsigned off = (unsigned char) buf[0x18] | (((unsigned char) buf[0x19]) << 8);
-	      win16_exe = off < sizeof (IMAGE_DOS_HEADER);
-	      if (!win16_exe)
-		real_path.set_cygexec (!!hook_or_detect_cygwin (buf, NULL));
-	      UnmapViewOfFile (buf);
-	      break;
-	    }
-	} while (0);
+      {
+	myfault efault;
+	if (efault.faulted ())
+	  {
+	    UnmapViewOfFile (buf);
+	    real_path.set_cygexec (false);
+	    break;
+	  }
+	if (buf[0] == 'M' && buf[1] == 'Z')
+	  {
+	    unsigned off = (unsigned char) buf[0x18] | (((unsigned char) buf[0x19]) << 8);
+	    win16_exe = off < sizeof (IMAGE_DOS_HEADER);
+	    if (!win16_exe)
+	      real_path.set_cygexec (!!hook_or_detect_cygwin (buf, NULL));
+	    UnmapViewOfFile (buf);
+	    break;
+	  }
+      }
 
       debug_printf ("%s is possibly a script", (char *) real_path);