* sol-thread.c (restore_inferior_pid): Save the PID in a freshly
authorAndrew Cagney <cagney@redhat.com>
Wed, 7 Feb 2001 03:44:24 +0000 (03:44 +0000)
committerAndrew Cagney <cagney@redhat.com>
Wed, 7 Feb 2001 03:44:24 +0000 (03:44 +0000)
allocated buffer.
(save_inferior_pid): Restore the PID from that tempoary
buffer. Delete the buffer.
* utils.c (make_cleanup_close, do_close_cleanup): Ditto for FD.

gdb/ChangeLog
gdb/sol-thread.c
gdb/utils.c

index 5aa2f11ac3e0794eeac124a80dead2d6c8a60271..a8091353997f82c880b1a6da1078225884e090c2 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-06  Andrew Cagney  <ac131313@redhat.com>
+
+       * sol-thread.c (restore_inferior_pid): Save the PID in a freshly
+       allocated buffer.
+       (save_inferior_pid): Restore the PID from that tempoary
+       buffer. Delete the buffer.
+       * utils.c (make_cleanup_close, do_close_cleanup): Ditto for FD.
+
 2001-02-06  Andrew Cagney  <ac131313@redhat.com>
 
        * MAINTAINERS: Add ``The Obvious Fix Rule''.
index f7727b483d860d53e2f04de1932fff3afad0f266..f266902f78eb3bdf27afe68f2aff956136419f19 100644 (file)
@@ -424,13 +424,17 @@ lwp_to_thread (int lwp)
 static struct cleanup *
 save_inferior_pid (void)
 {
-  return make_cleanup (restore_inferior_pid, (void *) inferior_pid);
+  int *saved_pid = xmalloc (sizeof (int));
+  *saved_pid = inferior_pid;
+  return make_cleanup (restore_inferior_pid, saved_pid);
 }
 
 static void
-restore_inferior_pid (void *pid)
+restore_inferior_pid (void *data)
 {
-  inferior_pid = (int) pid;
+  int *saved_pid = data;
+  inferior_pid = *saved_pid;
+  xfree (saved_pid);
 }
 \f
 
index 0d89cb7b561da22ba23398eb7d457fa0945af7b7..164bc9c1648a1a194e9be703ad21355330397c73 100644 (file)
@@ -215,14 +215,17 @@ make_cleanup_bfd_close (bfd *abfd)
 static void
 do_close_cleanup (void *arg)
 {
-  close ((int) arg);
+  int *fd = arg;
+  close (*fd);
+  xfree (fd);
 }
 
 struct cleanup *
 make_cleanup_close (int fd)
 {
-  /* int into void*. Outch!! */
-  return make_cleanup (do_close_cleanup, (void *) fd);
+  int *saved_fd = xmalloc (sizeof (fd));
+  *saved_fd = fd;
+  return make_cleanup (do_close_cleanup, saved_fd);
 }
 
 static void