/* Dump an executable image.
- Copyright (C) 1985-1988, 1999, 2001-2013 Free Software Foundation,
+ Copyright (C) 1985-1988, 1999, 2001-2014 Free Software Foundation,
Inc.
This file is part of GNU Emacs.
static _Noreturn void
report_error (const char *file, int fd)
{
+ int err = errno;
if (fd)
- {
- int failed_errno = errno;
- close (fd);
- errno = failed_errno;
- }
- report_file_error ("Cannot unexec", Fcons (build_string (file), Qnil));
+ emacs_close (fd);
+ report_file_errno ("Cannot unexec", build_string (file), err);
}
#define ERROR0(msg) report_error_1 (new, msg)
report_error_1 (int fd, const char *msg, ...)
{
va_list ap;
- close (fd);
+ emacs_close (fd);
va_start (ap, msg);
verror (msg, ap);
va_end (ap);
|| adjust_lnnoptrs (new, a_out, new_name) < 0
|| unrelocate_symbols (new, a_out, a_name, new_name) < 0)
{
- close (new);
+ emacs_close (new);
return;
}
- close (new);
+ emacs_close (new);
if (a_out >= 0)
- close (a_out);
+ emacs_close (a_out);
mark_x (new_name);
}
char *ptr;
lseek (new, text_scnptr, SEEK_SET);
- ptr = _text + text_scnptr;
+ ptr = _text;
end = ptr + f_ohdr.tsize;
write_segment (new, ptr, end);
}
}
}
- close (new);
+ emacs_close (new);
return 0;
}
PERROR (a_name);
}
- p = (int *) (ldrel.l_vaddr + d_reloc);
+ p = (int *) (intptr_t) (ldrel.l_vaddr + d_reloc);
switch (ldrel.l_symndx) {
case SYMNDX_TEXT: