1. 16 Jan, 2020 1 commit
    • Robert Pluim's avatar
      Make emacs prefer an existing ~/.emacs.d to an existing XDG location · 13995f31
      Robert Pluim authored
      * doc/emacs/custom.texi (Find Init): Update description of how Emacs
      finds its init file directory and the interaction with
      $XDG_CONFIG_HOME
      (Early Init File): Correct XDG location of early-init.el
      
      * etc/NEWS: Update description to make it clear the ~/.emacs.d is
      preferred, even if the XDG location exists.
      
      * lisp/startup.el: Prefer ~/.emacs.d even if the XDG location exists.
      
      * lib-src/emacsclient.c (open_config): Prefer home directory the XDG
      location.
      13995f31
  2. 01 Jan, 2020 2 commits
  3. 10 Dec, 2019 3 commits
    • Paul Eggert's avatar
      Prefer static to extern in ebrowse · 28578f87
      Paul Eggert authored
      * lib-src/ebrowse.c (info_where, info_cls, info_member)
      (info_position, options, yyival, yytext, yytext_end, yyout)
      (yyline, filename, is_ident, is_digit, is_white, f_append)
      (f_verbose, f_very_verbose, f_structs, f_regexps)
      (f_nested_classes, min_regexp, max_regexp, inbuffer, in)
      (inbuffer_size, string_start, class_table, member_table)
      (namespace_alias_table, global_symbols, current_namespace)
      (all_namespaces, namespace_stack, namespace_stack_size)
      (namespace_sp, tk, keyword_table, search_path)
      (search_path_tail, scope_buffer, scope_buffer_size)
      (scope_buffer_len): Now static.
      (options): Now const.
      28578f87
    • Paul Eggert's avatar
      eec809e9
    • Paul Eggert's avatar
      daaa9da0
  4. 26 Nov, 2019 1 commit
    • Paul Eggert's avatar
      etags: remove some arbitrary limits · cffa5703
      Paul Eggert authored
      etags had undefined behavior if input files, lines, tags, etc.,
      had more than INT_MAX bytes.  Clean up the usage of integer types
      to fix the overflow errors I found.
      * admin/merge-gnulib (GNULIB_MODULES): Add mempcpy.
      * lib-src/etags.c: Include inttypes.h, intprops.h.
      (memcpyz): New function.  Use it to simplify several occurrences
      of memcpy followed by storing a trailing '\0'.
      (xnew): Use xnmalloc, to catch overflow on integer multiplication.
      (xrnew): Change last arg to multiplier.  The type is not needed.
      All callers changed.
      (node, lineno, charno, linecharno, invalidcharno, make_tag):
      (pfnote, add_node, number_len, C_symtype, lbz, Makefile_targets)
      (readline):
      Use intmax_t for line numbers and character positions, instead of
      int or long.
      (linebuffer, make_tag, pfnote, total_size_of_entries, put_entry)
      (in_word_set, C_symtype, token, cstack, pushclass_above):
      (popclass_above, write_classname, consider_token, C_entries)
      (Ruby_functions, Makefile_targets, Lua_functions, TeX_commands)
      (TeX_decode_env, erlang_func, erlang_attribute, erlang_atom)
      (substitute, regex_tag_multiline, nocase_tail, readline_interval)
      (readline, savenstr, concat, etags_getcwd, relative_filename)
      (linebuffer_setlen):
      Use ptrdiff_t for object sizes, instead of int or long or unsigned
      or size_t.
      (write_classname, C_entries):
      Avoid sprintf, as the result could exceed INT_MAX bytes
      and then behavior goes haywire.
      (main): Use int, instead of unsigned, for argv counts.
      (get_language_from_filename): Use bool for boolean.
      (Ruby_functions): Prefer strcpy to memcpy when copying "=".
      (linebuffer_setlen): Use ‘if’ instead of ‘while’.
      (memory_full, xnmalloc, xnrealloc): New functions.
      (xmalloc): Use memory_full, and take a ptrdiff_t instead of a size_t.
      (xrealloc): Remove; no longer needed.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/mempcpy.c, m4/mempcpy.m4: New files, copied from Gnulib.
      cffa5703
  5. 23 Sep, 2019 1 commit
    • Paul Eggert's avatar
      Update some URLs · 946a56a1
      Paul Eggert authored
      This mostly changes http: to https: in URLs.  It also updates
      some URLs that have moved, removes some URLs that no longer
      work, recommends against using procmail (procmail.org no
      longer works), and removes some mentions of the
      no-longer-existing Gmane, LPF and VTW.
      It doesn't update all URLs, just the ones I had time for.
      * GNUmakefile (help):
      * admin/admin.el (manual-doctype-string):
      * admin/charsets/Makefile.in (${charsetdir}/ALTERNATIVNYJ.map):
      * admin/charsets/mapconv:
      * lisp/net/soap-client.el (soap-create-envelope):
      * lisp/org/org.el (org-doi-server-url):
      * lisp/textmodes/bibtex.el (bibtex-generate-url-list):
      Prefer https: to http: un URLs.
      946a56a1
  6. 15 Sep, 2019 1 commit
  7. 31 Aug, 2019 1 commit
    • Paul Eggert's avatar
      Check instead of relying on NOTREACHED · 77910055
      Paul Eggert authored
      NOTREACHED was designed for traditional lint decades ago,
      and _Noreturn now normally subsumes its function.
      In the one case in Emacs where NORETURN might help and _Noreturn does
      not, check for NOTREACHED instead of assuming it.
      * lib-src/etags.c (main):
      * src/xterm.c (x_connection_closed):
      Remove NOTREACHED after a call to a _Noreturn function, as NOTREACHED
      is no longer needed there.  Also, one of the NOTREACHEDs was
      misplaced, which defeated traditional lint checking anyway.
      * lib-src/pop.c (pop_getline): Redo so as to not need NOTREACHED.
      * src/emacs.c (main): Use eassume (false) rather than NOTREACHED,
      so that running with ENABLE_CHECKING catches any internal error
      causing the toplevel Frecursive_edit to return.
      77910055
  8. 30 Aug, 2019 1 commit
    • Paul Eggert's avatar
      emacsclient: adjust to new config file location · 44f15b63
      Paul Eggert authored
      * lib-src/emacsclient.c (open_config): New arg XDG, to respect
      XDG_CONFIG_HOME, consistently with Emacs proper.  Caller changed.
      Use XDG convention if available, falling back on the old names
      if not.
      44f15b63
  9. 12 Jul, 2019 2 commits
  10. 09 Jul, 2019 1 commit
    • Andreas Schwab's avatar
      Make fingerprint handling compatible with LTO · fc41b061
      Andreas Schwab authored
      Tell the compiler that the fingerprint variable is modified unpredictably.
      
      * lib/fingerprint.h (fingerprint): Remove const.
      * lib/fingerprint.c (fingerprint): Likewise.
      * src/pdumper.c (Fdump_emacs_portable): Cast fingerprint variable.
      (pdumper_load): Likewise.
      * lib-src/make-fingerprint.c (main): Likewise.
      fc41b061
  11. 27 Jun, 2019 1 commit
  12. 26 Jun, 2019 1 commit
  13. 25 Jun, 2019 3 commits
    • Paul Eggert's avatar
      Prefer PATH_MAX to MAXPATHLEN · 824f7841
      Paul Eggert authored
      PATH_MAX is standardized, MAXPATHLEN is not.
      Also, the Gnulib pathmax module fixes some rare bugs with PATH_MAX.
      So prefer PATH_MAX to MAXPATHLEN unless we know the latter is
      also correct (for some platform-specific code).
      * admin/merge-gnulib (GNULIB_MODULES): Add pathmax.
      This module was already present, as a dependency of canonicalize-lgpl,
      but now Emacs is using it directly.  Sort.
      * lib-src/emacsclient.c: Include stdint.h, pathmax.h.
      (get_current_dir_name): Sync to current src/sysdep.c.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * src/sysdep.c: Include pathmax.h.
      (get_current_dir_name_or_unreachable):
      Use PATH_MAX instead of MAXPATHLEN.
      824f7841
    • Paul Eggert's avatar
      Avoid some strlen work, primarily via strnlen · d7c68362
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add strnlen.
      * lib-src/etags.c (find_entries):
      * src/emacs.c (main):
      * src/nsmenu.m (parseKeyEquiv:):
      * src/nsterm.m (ns_xlfd_to_fontname):
      * src/term.c (vfatal):
      Prefer !*X to !strlen (X).
      * lib-src/etags.c (pfnote, add_regex):
      * lib-src/pop.c (pop_open):
      * lib-src/update-game-score.c (main):
      * lwlib/lwlib.c (lw_separator_p):
      * src/doprnt.c (doprnt):
      * src/emacs.c (main):
      * src/inotify.c (inotifyevent_to_event):
      * src/keyboard.c (menu_separator_name_p, parse_tool_bar_item):
      * src/sysdep.c (get_current_dir_name_or_unreachable):
      * src/xdisp.c (store_mode_line_string):
      Use strnlen to avoid unnecessary work with strlen.
      * lib-src/etags.c (Prolog_functions, prolog_pr)
      (Erlang_functions, erlang_func):
      Prefer ptrdiff_t to size_t when either will do.
      (prolog_pr, erlang_func): New arg LASTLEN, to avoid
      unnecessary strlen call. All callers changed.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/strnlen.c, m4/strnlen.m4: New files, copied from Gnulib.
      * lwlib/lwlib.c (lw_separator_p):
      * src/json.c (json_has_prefix):
      Use strncmp to avoid unecessary work with strlen + memcmp.
      * src/process.c (set_socket_option): Use SBYTES instead of strlen.
      d7c68362
    • David Hull's avatar
      etags: Fix handling of quoted symbol names in Erlang · f0151e17
      David Hull authored
      * lib-src/etags.c (erlang_attribute): Fix handling of quoted
      symbol names in Erlang (bug#24960).
      f0151e17
  14. 24 Jun, 2019 2 commits
  15. 20 Jun, 2019 1 commit
    • Paul Eggert's avatar
      Simplify lib-src version printing · b6af2792
      Paul Eggert authored
      * lib-src/Makefile.in (etags_cflags): Remove.
      All uses replaced by a simple ‘-o $@’.
      (ebrowse${EXEEXT}, emacsclient${EXEEXT}, emacsclientw${EXEEXT}):
      Omit -DVERSION= option.
      * lib-src/ebrowse.c (VERSION):
      * lib-src/emacsclient.c (VERSION):
      * lib-src/etags.c (EMACS_NAME, VERSION): Remove.
      All uses replaced by PACKAGE_NAME and PACKAGE_VERSION.
      * lib-src/ebrowse.c (version):
      * lib-src/etags.c (print_version):
      Use fputs to output the version info, since that’s fputs_unlocked.
      * lib-src/etags.c (PROGRAM_NAME): New macro.
      (print_version): Use it.
      b6af2792
  16. 26 May, 2019 1 commit
  17. 23 May, 2019 1 commit
    • Paul Eggert's avatar
      Avoid backslash-newline-newline in source code · 54244364
      Paul Eggert authored
      * etc/refcards/Makefile (PDF_FRENCH):
      * lib-src/etags.c (LOOP_ON_INPUT_LINES):
      * lisp/dabbrev.el (dabbrev-check-other-buffers):
      * lisp/org/org-id.el (org-id-link-to-org-use-id):
      * lisp/org/org.el (org-support-shift-select, org-file-apps):
      * src/alloc.c (CHECK_ALLOCATED_AND_LIVE)
      (CHECK_ALLOCATED_AND_LIVE_SYMBOL):
      * src/frame.h (FRAME_PIXEL_WIDTH_TO_TEXT_COLS):
      * src/regex-emacs.c (PREFETCH_NOLIMIT):
      * src/window.h (WINDOW_BUFFER):
      Remove backslash-newline that immediately precedes another
      newline, as this is not the usual style and is confusing.
      54244364
  18. 04 May, 2019 1 commit
    • Paul Eggert's avatar
      Port new fingerprinting scheme to clang + LTO · ebecafbd
      Paul Eggert authored
      * lib-src/make-fingerprint.c (main): Don't consider multiple
      instances of the fingerprint to be an error, as this can
      happen with clang and -flto.  Instead, replace all instances
      of the fingerprint.  There is a tiny chance that this will
      silently corrupt the Emacs executable.
      
      This patch suggests that we should go back to fingerprinting
      the inputs to the linker instead of its output, as the new
      fingerprinting scheme is unnecessarily complicated and this
      complexity reduces reliability. The old scheme (i.e., before
      commit 2019-05-14T23:31:24Z!eggert@cs.ucla.edu) was simpler
      and more portable and good enough, and it's looking like it
      would be less trouble in practice than the new scheme.
      ebecafbd
  19. 03 May, 2019 1 commit
    • Paul Eggert's avatar
      Simplify use of NDEBUG in etags.c · 6caf9be6
      Paul Eggert authored
      * lib-src/etags.c [!DEBUG]: Do not define NDEBUG,
      as that’s conf_post.h’s job now.
      [NDEBUG]: Do not redefine ‘assert’, as that works around
      ancient bugs (e.g., sunos4 pcc) that don’t matter any more,
      as can be seen that other Emacs source files that successfully
      use assert.h without this workaround.
      6caf9be6
  20. 26 Apr, 2019 1 commit
    • Stefan Monnier's avatar
      * lib-src/profile.c: Delete long-obsolete file · 82fc8ca6
      Stefan Monnier authored
      This auxiliary executable was used by the old `profile.el` which later
      inspired `elp.el`.  It was made obsolete when Emacs acquired native timers.
      
      * lib-src/Makefile.in (UTILITIES): Remove profile.
      (profile${EXEEXT}): Delete rule.
      82fc8ca6
  21. 25 Apr, 2019 2 commits
    • Paul Eggert's avatar
      Port emacsclient euidaccess to Solaris 10 · 30030945
      Paul Eggert authored
      Without this fix, linking emacsclient fails with ‘Undefined
      symbol eaccess’ on Solaris 10 sparc.
      * lib-src/Makefile.in (LIB_EACCESS): New macro.
      (emacsclient${EXEEXT}, emacsclientw${EXEEXT}): Use it.
      30030945
    • Paul Eggert's avatar
      Improve port to platforms lacking euidaccess (Bug#35406) · 2bf95739
      Paul Eggert authored
      * lib-src/emacsclient.c (set_local_socket):
      Use faccessat with AT_EACCESS instead of using euidaccess.
      * admin/merge-gnulib, lib/gnulib.mk.in, m4/gnulib-comp.m4:
      Revert previous change.
      2bf95739
  22. 21 Apr, 2019 1 commit
  23. 20 Apr, 2019 1 commit
    • Paul Eggert's avatar
      Improve XDG_RUNTIME_DIR diagnostic · b3a12c62
      Paul Eggert authored
      * lib-src/emacsclient.c (set_local_socket):
      If there appears to be an XDG runtime directory for the user
      but XDG_RUNTIME_DIR is unset, suggest setting it while warning
      about potential security issues (Bug#35300).
      b3a12c62
  24. 18 Apr, 2019 3 commits
    • Philipp Stephani's avatar
    • Paul Eggert's avatar
      Fix make-fingerprint off-by-one bug · df5ca4f7
      Paul Eggert authored
      Problem reported by Alex Gramiak in:
      https://lists.gnu.org/r/emacs-devel/2019-04/msg00784.html
      * lib-src/make-fingerprint.c (main): Fix recently-introduced
      off-by-one bug when accessing args after -r.
      df5ca4f7
    • Paul Eggert's avatar
      Mark _Noreturn error functions as cold · 6d6c55db
      Paul Eggert authored
      On my platform this made ‘make compile-always’ 1.3% faster.
      Suggested by Alex Gramiak in:
      https://lists.gnu.org/r/emacs-devel/2019-04/msg00684.html
      * configure.ac (nw): Don’t use -Wsuggest-attribute=cold.
      * lib-src/make-docfile.c (write_globals):
      Mark noreturn functions as cold.
      * src/callproc.c (exec_failed):
      * src/data.c (wrong_length_argument, wrong_type_argument):
      * src/emacs-module.c (module_abort):
      * src/emacs.c (terminate_due_to_signal):
      * src/eval.c (unwind_to_catch):
      * src/image.c (my_png_error, my_error_exit):
      * src/json.c (json_out_of_memory, json_parse_error):
      * src/keyboard.c (quit_throw_to_read_char, user_error):
      * src/lisp.h (die, wrong_type_argument, wrong_choice)
      (args_out_of_range, args_out_of_range_3, circular_list)
      (buffer_overflow, memory_full, buffer_memory_full)
      (string_overflow, xsignal, xsignal0, xsignal1, xsignal2)
      (xsignal3, signal_error, overflow_error, error, verror)
      (nsberror, report_file_errno, report_file_error)
      (report_file_notify_error, terminate_due_to_signal)
      (emacs_abort, fatal):
      * src/lread.c (load_error_old_style_backquotes)
      (end_of_file_error, invalid_syntax):
      * src/pdumper.c (error_unsupported_dump_object):
      * src/puresize.h (pure_write_error):
      * src/search.c (matcher_overflow):
      * src/sound.c (sound_perror, alsa_sound_perror):
      * src/sysdep.c (handle_arith_signal):
      * src/systime.h (time_overflow):
      * src/term.c (maybe_fatal, vfatal):
      * src/textprop.c (text_read_only):
      * src/timefns.c (invalid_time_zone_specification)
      (time_error, invalid_hz):
      * src/xterm.c (x_connection_closed):
      Use AVOID instead of _Noreturn void, so that it’s marked cold.
      * src/conf_post.h (__has_attribute_cold) [!__has_attribute]:
      New macro.
      (ATTRIBUTE_COLD): New macro.
      * src/frame.h (WINDOW_SYSTEM_RETURN): Add ATTRIBUTE_COLD.
      * src/lisp.h (AVOID): New macro.
      * src/xterm.c: Omit unnecessary static decls, so that we needn’t
      worry about which functions should be marked cold.
      (x_io_error_quitter): Mark as cold.
      6d6c55db
  25. 15 Apr, 2019 2 commits
    • Eli Zaretskii's avatar
      Fix MS-Windows build broken by make-fingerprint changes · 3ec22997
      Eli Zaretskii authored
      * lib-src/make-fingerprint.c (fseeko) [WNDOWSNT]: Define to
      fseeko64 for non-MinGW64 MinGW.
      
      * lib-src/ntlib.c (stat): Fix calculation of file size.
      (fstat): New function, a subset of src/w32.c:fstat.  This is
      needed because make-fingerprint.c now calls 'fstat', and the
      MS version will fail to produce reliable results because
      nt/inc/sys/stat.h redefines 'struct stat'.
      3ec22997
    • Paul Eggert's avatar
      Replace executable’s fingerprint in place · 5c2f94a1
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add memmem-simple.
      (AVOIDED_MODULES): Add memchr.
      * configure.ac (HAVE_PDUMPER): AC_SUBST it, too, for use in makefiles.
      * lib/Makefile.in (libgnu_a_OBJECTS): Add fingerprint.o.
      * lib/fingerprint.c: New file.
      * lib/memmem.c, lib/str-two-way.h, m4/memmem.m4: New files,
      copied from Gnulib.
      * lib/fingerprint.h: Rename from src/fingerprint.h.
      * lib-src/make-fingerprint.c: Include limits.h, sys/stat.h,
      fingerprint.h, intprops.h, min-max.h.
      (SSIZE_MAX): New macro, if not already defined.
      (main): Without -r, Replace the fingerprint in the input file
      instead of generating a fingerprint.c.
      * lib/Makefile.in (libgnu_a_OBJECTS): Add fingerprint.o.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * src/Makefile.in (HAVE_PDUMPER, MAKE_PDUMPER_FINGERPRINT):
      New macros.
      (temacs$(EXEEXT)): Use them to replace the fingerprint instead
      of precalculating it.
      (mostlyclean, ctagsfiles1): Do not worry about fingerprint.c.
      5c2f94a1
  26. 09 Apr, 2019 2 commits
    • Paul Eggert's avatar
      Remove the need for temacs.in · d8260374
      Paul Eggert authored
      Instead of building a file temacs.in used only to compute a
      fingerprint, compute the fingerprint directly from the .o and
      .a files that go into temacs.in.  This speeds up the build by
      avoiding the need to link temacs twice, once with a dummy
      fingerprint.
      * lib-src/make-fingerprint.c (main): No need to generate
      a fingerprint file that includes config.h, now that fingerprint.c
      depends on all the .o files.
      * src/Makefile.in ($(libsrc)/make-fingerprint$(EXEEXT)):
      Use the same rule as $(libsrc)/make-docfile$(EXEEXT).
      * src/fingerprint-dummy.c: Remove.
      * src/Makefile.in (${charsets}, $(libsrc)/make-docfile$(EXEEXT))
      ($(LIBEGNU_ARCHIVE), $(lwlibdir)/liblw.a, $(oldXMenudir)/libXMenu11.a)
      (../config.status, ${ETAGS}, ../lisp/TAGS, $(lwlibdir)/TAGS)
      ($(lispsource)/loaddefs.el):
      Prefer ‘$(MAKE) -C $(dir $@)’ to ‘${MAKE} -C SOMESTRING’ when
      either will do, as the former is more regular and lets us
      coalesce rules better.
      (EMACS_DEPS_PRE, EMACS_DEPS_POST, BUILD_EMACS_PRE)
      (BUILD_EMACS_POST, temacs.in$(EXEEXT)): Remove.
      (FINGERPRINTED): New macro.
      (fingerprint.c): Use it instead of temacs.in$(EXEEXT), to
      avoid the need to build temacs.in at all.
      (temacs$(EXEEXT)): No need to depend on other .o files now;
      fingerprint.o is enough, since it depends on the rest.
      Spell out what used to be in BUILD_EMACS_PRE and BUILD_EMACS_POST.
      (mostlyclean): No need to remove temacs.in.
      d8260374
    • Paul Eggert's avatar
      Remove assumption of uint64_t etc. in portable code · e44ff2de
      Paul Eggert authored
      C11 doesn’t guarantee the existence of types like uint64_t,
      so avoid these types in portable code, as it’s easy to do so.
      There’s no need to avoid the types in w32-specific code,
      since w32 is guaranteed to have them.
      * lib-src/make-fingerprint.c (main):
      * src/fingerprint-dummy.c:
      * src/fingerprint.h:
      * src/pdumper.c (dump_fingerprint, struct dump_header):
      Prefer unsigned char to uint8_t in portable code, as either will do.
      Put an "#include <config.h>" in fingerprint.c files, so
      that the corresponding .o file is rebuilt after ./configure is run.
      * lib-src/make-fingerprint.c (main):
      Simplify loop.
      * src/Makefile.in (fingerprint.c): Update atomically.
      * src/pdumper.c: Omit unnecessary check that off_t is the same
      size as int32_t or int64_t, as the code does not rely on this
      assumption.
      (dump_off): Use int_least32_t, not int32_t.
      (struct dump_reloc): Use unsigned int, not uint32_t.
      (dump_anonymous_allocate_w32, dump_anonymous_allocate_posix)
      (dump_anonymous_allocate, dump_map_file_w32, dump_map_file_posix)
      (dump_map_file:
      Do the sanity checks at compile time, not at run-time, to avoid
      usage of uint64_t etc. on non-w32 platforms.
      e44ff2de
  27. 01 Mar, 2019 1 commit
    • Paul Eggert's avatar
      Suppress GC stats when obviously not needed · 7e29eae0
      Paul Eggert authored
      This should help future improvements where these stats can be
      bignums that do not fit into intmax_t.
      * src/alloc.c (struct gcstat, gcstat): New type and static var,
      to package up GC statistics into one C object.  It replaces ...
      (total_free_intervals, total_intervals, total_strings)
      (total_free_strings, total_string_bytes, total_vectors)
      (total_vector_slots, total_free_vector_slots): ... these
      removed static vars.  All uses changed.
      (garbage_collect_1): Accept a struct gcstat *, not a void *
      which was not used anymore anyway.  Return a bool indicating
      success, instead of a Lisp object.  All callers changed.
      (garbage_collect): New function.  All C callers of
      Fgarbage_collect changed to use it, since none of them use the
      return value.  Now, only Lisp code uses Fgarbage_collect.
      (Fgarbage_collect): No longer noinline.  Cons up the return
      value here, not in garbage_collect_1.
      7e29eae0
  28. 27 Feb, 2019 1 commit
    • Paul Eggert's avatar
      DEFVAR_INT variables are now intmax_t · e828765d
      Paul Eggert authored
      Formerly they were fixnums, which led to problems when dealing
      with values that might not fit on 32-bit platforms, such as
      string-chars-consed or floats_consed.  64-bit counters should
      be good enough for these (for a while, anyway...).
      While we’re at it, fix some unlikely integer overflow bugs
      that have been in the code for a while.
      * lib-src/make-docfile.c (write_globals):
      * src/data.c (do_symval_forwarding, store_symval_forwarding):
      * src/eval.c (restore_stack_limits, call_debugger):
      * src/frame.h (struct frame.cost_calculation_baud_rate):
      * src/keyboard.c (last_auto_save, bind_polling_period, read_char):
      * src/lisp.h (struct Lisp_Intfwd.intvar):
      * src/lread.c (defvar_int):
      * src/pdumper.c (dump_fwd_int):
      * src/thread.h (struct thread_state.m_lisp_eval_depth):
      * src/undo.c (truncate_undo_list):
      * src/xselect.c (wait_for_property_change)
      (x_get_foreign_selection):
      * src/xterm.c (x_emacs_to_x_modifiers):
      DEFVAR_INT variables now have the C type intmax_t, not EMACS_INT.
      * src/data.c (store_symval_forwarding):
      * src/gnutls.c (Fgnutls_boot):
      * src/keyboard.c (bind_polling_period):
      * src/macros.c (pop_kbd_macro, Fexecute_kbd_macro):
      * src/undo.c (truncate_undo_list):
      Allow any integer that fits into intmax_t, instead of
      requiring it to be a Lisp fixnum.
      * src/dispnew.c (update_window):
      * src/frame.c (x_figure_window_size):
      * src/gnutls.c (init_gnutls_functions)
      (emacs_gnutls_handle_error):
      * src/keyboard.c (make_lisp_event):
      * src/nsterm.m (ns_dumpglyphs_image):
      * src/profiler.c (make_log):
      * src/scroll.c (calculate_scrolling)
      (calculate_direct_scrolling):
      * src/termcap.c (tputs):
      * src/xterm.c (x_draw_image_relief):
      Avoid implementation-defined behavior on conversion of
      out-of-range integers.
      * src/eval.c (when_entered_debugger): Now intmax_t.
      (max_ensure_room): New function, that avoids signed integer overflow.
      (call_debugger, signal_or_quit): Use it.
      * src/fileio.c (Fdo_auto_save):
      * src/keyboard.c (make_lisp_event):
      * src/term.c (calculate_costs):
      * src/xdisp.c (build_desired_tool_bar_string)
      (hscroll_window_tree, try_scrolling, decode_mode_spec)
      (x_produce_glyphs):
      Avoid signed integer overflow.
      * src/lisp.h (clip_to_bounds): Generalize to intmax_t.
      * src/pdumper.c (dump_emacs_reloc_immediate_emacs_int): Remove, ...
      (dump_emacs_reloc_immediate_intmax_t): ... replacing with this
      function.  All uses changed.
      * src/profiler.c (make_log): Omit args.  All callers changed.
      * src/termcap.c: Include stdlib.h, for atoi.
      Include intprops.h.
      * src/window.c (sanitize_next_screen_context_lines): New function.
      (window_scroll_pixel_based, window_scroll_line_based):
      Use it to avoid signed integer overflow.
      e828765d