diff options
Diffstat (limited to 'binutils/ar.c')
-rw-r--r-- | binutils/ar.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/binutils/ar.c b/binutils/ar.c index 7d279d6..2253242 100644 --- a/binutils/ar.c +++ b/binutils/ar.c @@ -25,6 +25,7 @@ #include "sysdep.h" #include "bfd.h" +#include "libbfd.h" #include "libiberty.h" #include "progress.h" #include "getopt.h" @@ -1252,20 +1253,24 @@ write_archive (bfd *iarch) bfd *obfd; char *old_name, *new_name; bfd *contents_head = iarch->archive_next; + int ofd = -1; old_name = (char *) xmalloc (strlen (bfd_get_filename (iarch)) + 1); strcpy (old_name, bfd_get_filename (iarch)); - new_name = make_tempname (old_name); + new_name = make_tempname (old_name, &ofd); if (new_name == NULL) bfd_fatal (_("could not create temporary file whilst writing archive")); output_filename = new_name; - obfd = bfd_openw (new_name, bfd_get_target (iarch)); + obfd = bfd_fdopenw (new_name, bfd_get_target (iarch), ofd); if (obfd == NULL) - bfd_fatal (old_name); + { + close (ofd); + bfd_fatal (old_name); + } output_bfd = obfd; |