X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fdumper.c;h=9e93d0967d2877ec671927078680b0132341d41d;hb=9f7e1f8c96cb936ba2e2cb5db1185f9bc18c42cf;hp=8cbcf5b030d50334717d05860c5da129fe8f1d80;hpb=a5812bf2ff9a9cf40f4ff78dcb83f5b4c295bd18;p=chise%2Fxemacs-chise.git.1 diff --git a/src/dumper.c b/src/dumper.c index 8cbcf5b..9e93d09 100644 --- a/src/dumper.c +++ b/src/dumper.c @@ -444,7 +444,7 @@ pdump_get_indirect_count (EMACS_INT code, stderr_out ("Unsupported count type : %d (line = %d, code=%ld)\n", idesc[line].type, line, (long)code); pdump_backtrace (); - abort (); + ABORT (); } count += delta; return count; @@ -544,7 +544,7 @@ pdump_register_sub (const void *data, const struct lrecord_description *desc, in default: stderr_out ("Unsupported dump type : %d\n", desc[pos].type); pdump_backtrace (); - abort (); + ABORT (); }; } } @@ -570,10 +570,10 @@ pdump_register_object (Lisp_Object obj) if (imp->description) { int me = depth++; - if (me>65536) + if (me>=65536) { stderr_out ("Backtrace overflow, loop ?\n"); - abort (); + ABORT (); } backtrace[me].obj = objh; backtrace[me].position = 0; @@ -605,10 +605,10 @@ pdump_register_struct (const void *data, { int me = depth++; int i; - if (me>65536) + if (me>=65536) { stderr_out ("Backtrace overflow, loop ?\n"); - abort (); + ABORT (); } backtrace[me].obj = 0; backtrace[me].position = 0; @@ -721,7 +721,7 @@ pdump_dump_data (pdump_entry_list_elt *elt, } default: stderr_out ("Unsupported dump type : %d\n", desc[pos].type); - abort (); + ABORT (); } } } @@ -799,7 +799,7 @@ pdump_reloc_one (void *data, EMACS_INT delta, } default: stderr_out ("Unsupported dump type : %d\n", desc[pos].type); - abort (); + ABORT (); }; } } @@ -1071,7 +1071,8 @@ pdump (void) pdump_dump_root_objects (); fclose (pdump_out); - close (pdump_fd); + /* pdump_fd is already closed by the preceding fclose call + close (pdump_fd); */ free (pdump_buf); @@ -1419,13 +1420,17 @@ pdump_load (const char *argv0) } strcpy (w, name); - /* ### #$%$#^$^@%$^#%@$ ! */ -#ifdef access -#undef access -#endif + /* Check that exe_path is executable and not a directory */ +#undef access /* avoid !@#$%^& encapsulated access */ +#undef stat /* avoid !@#$%^& encapsulated stat */ + { + struct stat statbuf; + if (access (exe_path, X_OK) == 0 + && stat (exe_path, &statbuf) == 0 + && ! S_ISDIR (statbuf.st_mode)) + break; + } - if (!access (exe_path, X_OK)) - break; if (!*p) { /* Oh well, let's have some kind of default */