about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--sysdeps/mach/hurd/i386/tls.h11
2 files changed, 10 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index be29504346..ed1ddb7875 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2004-10-23  Roland McGrath  <roland@frob.com>
 
+	* sysdeps/mach/hurd/i386/tls.h (_hurd_tls_init): Don't return early
+	after an RPC succeeds.
+
 	* sysdeps/vax, sysdeps/unix/bsd/vax: Directories and all files removed.
 	These are now in the ports repository.
 	* sysdeps/tahoe, sysdeps/unix/bsd/tahoe: Likewise.
diff --git a/sysdeps/mach/hurd/i386/tls.h b/sysdeps/mach/hurd/i386/tls.h
index 8adbee98fc..f81180f9b1 100644
--- a/sysdeps/mach/hurd/i386/tls.h
+++ b/sysdeps/mach/hurd/i386/tls.h
@@ -75,9 +75,10 @@ _hurd_tls_init (tcbhead_t *tcb, int secondcall)
 	  sel = 0x27;
 	  err = __i386_set_ldt (tcb->self, sel, &desc, 1);
 	  assert_perror (err);
-	  return "i386_set_ldt failed";
+	  if (err)
+	    return "i386_set_ldt failed";
 	}
-      else
+      else if (err)
 	{
 	  assert_perror (err); /* Separate from above with different line #. */
 	  return "i386_set_gdt failed";
@@ -95,13 +96,15 @@ _hurd_tls_init (tcbhead_t *tcb, int secondcall)
 	{
 	  error_t err = __i386_set_ldt (tcb->self, sel, &desc, 1);
 	  assert_perror (err);
-	  return "i386_set_ldt failed";
+	  if (err)
+	    return "i386_set_ldt failed";
 	}
       else
 	{
 	  error_t err = __i386_set_gdt (tcb->self, &sel, desc);
 	  assert_perror (err);
-	  return "i386_set_gdt failed";
+	  if (err)
+	    return "i386_set_gdt failed";
 	}
     }