X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=binutils%2Fwindres.c;h=427e9823ce784edc6cd852cf3141b6cd998af2e5;hb=2d0a923cc653b76a531651c9f4b026a0ae366858;hp=7fa90fc7f78d8c5581ef550ccc612386737bf3f8;hpb=4b95cf5c0c75d6efc1b2f96af72317aecca079f1;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/windres.c b/binutils/windres.c index 7fa90fc7f7..427e9823ce 100644 --- a/binutils/windres.c +++ b/binutils/windres.c @@ -1,5 +1,5 @@ /* windres.c -- a program to manipulate Windows resources - Copyright (C) 1997-2014 Free Software Foundation, Inc. + Copyright (C) 1997-2020 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. Rewritten by Kai Tietz, Onevision. @@ -204,6 +204,7 @@ open_file_search (const char *filename, const char *mode, const char *errmsg, *real_filename = n; return e; } + free (n); if (errno != ENOENT) break; @@ -703,8 +704,7 @@ quot (const char *string) if ((buflen < slen * 2 + 2) || ! buf) { buflen = slen * 2 + 2; - if (buf) - free (buf); + free (buf); buf = (char *) xmalloc (buflen); } @@ -807,10 +807,12 @@ main (int argc, char **argv) program_name = argv[0]; xmalloc_set_program_name (program_name); + bfd_set_error_program_name (program_name); expandargv (&argc, &argv); - bfd_init (); + if (bfd_init () != BFD_INIT_MAGIC) + fatal (_("fatal error: libbfd ABI mismatch")); set_default_bfd_target (); res_init (); @@ -937,7 +939,7 @@ main (int argc, char **argv) { struct stat statbuf; char modebuf[11]; - + if (stat (optarg, & statbuf) == 0 /* Coded this way to avoid importing knowledge of S_ISDIR into this file. */ && (mode_string (statbuf.st_mode, modebuf), modebuf[0] == 'd')) @@ -1114,7 +1116,7 @@ windres_open_as_binary (const char *filename, int rdmode) if (rdmode && ! bfd_check_format (abfd, bfd_object)) fatal ("can't open `%s' for input.", filename); - + return abfd; } @@ -1309,7 +1311,7 @@ static rc_uint_type target_get_8 (const void *p, rc_uint_type length) { rc_uint_type ret; - + if (length < 1) fatal ("Resource too small for getting 8-bit value."); @@ -1322,7 +1324,7 @@ target_get_16 (const void *p, rc_uint_type length) { if (length < 2) fatal ("Resource too small for getting 16-bit value."); - + if (target_is_bigendian) return bfd_getb16 (p); else @@ -1334,7 +1336,7 @@ target_get_32 (const void *p, rc_uint_type length) { if (length < 4) fatal ("Resource too small for getting 32-bit value."); - + if (target_is_bigendian) return bfd_getb32 (p); else @@ -1352,7 +1354,7 @@ static void target_put_16 (void *p, rc_uint_type value) { assert (!! p); - + if (target_is_bigendian) bfd_putb16 (value, p); else @@ -1363,7 +1365,7 @@ static void target_put_32 (void *p, rc_uint_type value) { assert (!! p); - + if (target_is_bigendian) bfd_putb32 (value, p); else @@ -1402,5 +1404,5 @@ int wr_print (FILE *e, const char *fmt, ...) va_start (arg, fmt); r += vfprintf (e, fmt, arg); va_end (arg); - return r; + return r; }