X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fdumper.c;h=9e93d0967d2877ec671927078680b0132341d41d;hb=5ee12c7cb640100f2740eb20fe227bc1ffe3628d;hp=b66681261f2401ece621cd6c5e76768becadcf7c;hpb=499b5ad5e2308fd04e3654aaa462d099f1769fd1;p=chise%2Fxemacs-chise.git diff --git a/src/dumper.c b/src/dumper.c index b666812..9e93d09 100644 --- a/src/dumper.c +++ b/src/dumper.c @@ -282,7 +282,11 @@ static int pdump_fd; static void *pdump_buf; static FILE *pdump_out; +#ifdef UTF2000 +#define PDUMP_HASHSIZE 20000001 +#else #define PDUMP_HASHSIZE 200001 +#endif static pdump_entry_list_elt **pdump_hash; @@ -440,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; @@ -540,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 (); }; } } @@ -566,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; @@ -601,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; @@ -717,7 +721,7 @@ pdump_dump_data (pdump_entry_list_elt *elt, } default: stderr_out ("Unsupported dump type : %d\n", desc[pos].type); - abort (); + ABORT (); } } } @@ -795,7 +799,7 @@ pdump_reloc_one (void *data, EMACS_INT delta, } default: stderr_out ("Unsupported dump type : %d\n", desc[pos].type); - abort (); + ABORT (); }; } } @@ -1067,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); @@ -1415,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 */