1. 30 Jan, 2017 1 commit
    • Vibhav Pant's avatar
      Fix hash tables not being purified correctly. · 9c4dfdd1
      Vibhav Pant authored
      * src/alloc.c
      (purecopy_hash_table) New function, makes a copy of the given hash
      table in pure storage.
      Add new struct `pinned_object' and `pinned_objects' linked list for
      pinning objects.
      (Fpurecopy) Allow purifying hash tables
      (purecopy) Pin hash tables that are either weak or not declared with
      `:purecopy t`, use purecopy_hash_table otherwise.
      (marked_pinned_objects) New function, marks all objects in pinned_objects.
      (garbage_collect_1) Use it. Mark all pinned objects before sweeping.
      * src/lisp.h Add new field `pure' to struct `Lisp_Hash_Table'.
      * src/fns.c: Add `purecopy' parameter to hash tables.
      (Fmake_hash_table): Check for a `:purecopy PURECOPY' argument, pass it
      to make_hash_table.
      (make_hash_table): Add `pure' parameter, set h->pure to it.
      (Fclrhash, Fremhash, Fputhash): Enforce that the table is impure with
      CHECK_IMPURE.
      * src/lread.c: (read1) Parse for `purecopy' parameter while reading
        hash tables.
      * src/print.c: (print_object) add the `purecopy' parameter while
        printing hash tables.
      * src/category.c, src/emacs-module.c, src/image.c, src/profiler.c,
        src/xterm.c: Use new (make_hash_table).
      9c4dfdd1
  2. 26 Jan, 2017 2 commits
    • Paul Eggert's avatar
      Replace QUIT with maybe_quit · b3a3ed52
      Paul Eggert authored
      There’s no longer need to have QUIT stand for a slug of C statements.
      Use the more-obvious function-call syntax instead.
      Also, use true and false when setting immediate_quit.
      These changes should not affect the generated machine code.
      * src/lisp.h (QUIT): Remove.  All uses replaced by maybe_quit.
      b3a3ed52
    • Paul Eggert's avatar
      A quicker check for quit · 1392ec74
      Paul Eggert authored
      On some microbenchmarks this lets Emacs run 60% faster on my
      platform (AMD Phenom II X4 910e, Fedora 25 x86-64).
      * src/atimer.c: Include keyboard.h, for pending_signals.
      * src/editfns.c (Fcompare_buffer_substrings):
      * src/fns.c (Fnthcdr, Fmemq, Fmemql, Fassq, Frassq, Fplist_put)
      (Fnconc, Fplist_member):
      Set and clear immediate_quit before and after loop instead of
      executing QUIT each time through the loop.  This is OK for loops
      that affect only locals.
      * src/eval.c (process_quit_flag): Now static.
      (maybe_quit): New function, containing QUIT’s old body.
      * src/fns.c (rarely_quit): New function.
      (Fmember, Fassoc, Frassoc, Fdelete, Fnreverse, Freverse)
      (Flax_plist_get, Flax_plist_put, internal_equal, Fnconc):
      Use it instead of QUIT, for
      speed in tight loops that might modify non-locals.
      * src/keyboard.h (pending_signals, process_pending_signals):
      These belong to keyboard.c, so move them here ...
      * src/lisp.h: ... from here.
      (QUIT): Redefine in terms of the new maybe_quit function, which
      contains this macro’s old definiens.  This works well with branch
      prediction on processors with return stack buffers, e.g., x86
      other than the original Pentium.
      1392ec74
  3. 22 Jan, 2017 1 commit
    • Paul Eggert's avatar
      Improve uses of CHECK_LIST etc. · 0a49f158
      Paul Eggert authored
      * src/eval.c (FletX): Report an error for invalid constructs like
      ‘(let* (a . 0))’, so that ‘let*’ is more consistent with ‘let’.
      (lambda_arity): Use plain CHECK_CONS.
      * src/fns.c (CHECK_LIST_END): Move from here to lisp.h.
      (Fcopy_alist): Remove unnecessary CHECK_LIST call, since
      concat does that for us.
      (Fnthcdr, Fmember, Fmemql, Fdelete, Fnreverse):
      Use CHECK_LIST_END, not CHECK_LIST_CONS.  This hoists a
      runtime check out of the loop.
      (Fmemq): Simplify and use CHECK_LIST_END instead of CHECK_LIST.
      (Fassq, Fassoc, Frassq, Frassoc):
      Simplify and use CHECK_LIST_END instead of CAR.
      (assq_no_quit, assoc_no_quit): Simplify and assume proper list.
      (Fnconc): Use plain CHECK_CONS, and do-while instead of while loop.
      * src/fontset.c (Fnew_fontset):
      * src/frame.c (Fmodify_frame_parameters):
      Use CHECK_LIST_END at end, rather than CHECK_LIST at start, for a
      more-complete check.
      * src/gfilenotify.c (Fgfile_add_watch):
      Omit unnecessary CHECK_LIST, since Fmember does that for us.
      * src/lisp.h (lisp_h_CHECK_LIST_CONS, CHECK_LIST_CONS):
      Remove; no longer used.
      (CHECK_LIST_END): New inline function.
      0a49f158
  4. 01 Jan, 2017 1 commit
  5. 03 Oct, 2016 1 commit
  6. 30 Sep, 2016 1 commit
    • Paul Eggert's avatar
      Limit <config.h>’s includes · f4eb8900
      Paul Eggert authored
      This follows up on recent problems with the fact that config.h
      includes stdlib.h etc.; some files need to include stdlib.h later.
      config.h generally should limit itself to includes that are
      universally safe; outside of MS-Windows, only stdbool.h makes
      the cut among the files currently included.  So, move the
      other includes to just the files that need them (Bug#24506).
      * configure.ac (config_opsysfile): Remove, as this generic hook
      is no longer needed.
      * lib-src/etags.c, src/unexmacosx.c, src/w32.c, src/w32notify.c:
      * src/w32proc.c (_GNU_SOURCE):
      Remove, as it’s OK for config.h to do this now.
      * src/conf_post.h: Include <ms-w32.h>, instead of the generic
      config_opsysfile, for simplicity as this old way of configuring is
      now done only for the MS-Windows port.  Do not include <ms-w32.h>
      if DEFER_MS_W32_H, for the benefit of the few files that want its
      effects later.  Do not include <alloca.h>, <string.h>, or
      <stdlib.h>.  Other files modified to include these headers as
      needed, or to not include headers that are no longer needed.
      * src/lisp.h: Include <alloca.h> and <string.h> here, since
      some of the inline functions need them.
      * src/regex.c: Include <alloca.h> if not emacs.  (If emacs,
      we can rely on SAFE_ALLOCA.)  There is no longer any need to
      worry about HAVE_ALLOCA_H.
      * src/unexmacosx.c: Rely on config.h not including stdlib.h.
      * src/w32.c, src/w32notify.c, src/w32proc.c (DEFER_MS_W32_H):
      Define before including <config.h> first, and include <ms-w32.h>
      after the troublesome headers.
      f4eb8900
  7. 03 Aug, 2016 1 commit
  8. 12 Jul, 2016 1 commit
  9. 09 Jul, 2016 1 commit
    • Mario Lang's avatar
      An efficient built-in mapcan · 466ee1b3
      Mario Lang authored
      A built-in version of `mapcan' avoids consing up (and GC'ing) the
      intermediate list.
      
      * src/fns.c (Fmapcan): New built-in.
      (syms_of_fns): Define.
      
      * lisp/emacs-lisp/cl.el (mapcan): Remove defalias.
      
      * lisp/emacs-lisp/cl-extra.el (cl-mapcan): Use built-in `mapcan'
      if only one sequence is provided.
      
      * lisp/progmodes/hideif.el (hif-delimit):
      * lisp/dired-aux.el (dired-do-find-regexp):
      * lisp/woman.el (woman-parse-colon-path): Use `mapcan' instead of
      `cl-mapcan'.
      
      * lisp/woman.el (eval-when-compile): Require 'cl-lib only when
      compiling.
      
      * lisp/mouse.el (mouse-buffer-menu-map):
      * lisp/net/pop3.el (pop3-uidl-dele):
      * lisp/progmodes/gud.el (gud-jdb-build-source-files-list):
      * lisp/cedet/semantic/db-find.el (semanticdb-fast-strip-find-results):
      * lisp/cedet/semantic/symref/grep.el (semantic-symref-derive-find-filepatterns):
      * lisp/gnus/nnmail.el (nnmail-split-it):
      * lisp/gnus/gnus-sum.el (gnus-articles-in-thread):
      * lisp/gnus/gnus-registry.el (gnus-registry-sort-addresses):
      * lisp/gnus/gnus-util.el (gnus-mapcar): Use `mapcan'.
      466ee1b3
  10. 08 Jul, 2016 1 commit
  11. 23 Jun, 2016 1 commit
    • Eli Zaretskii's avatar
      Fix documentation of 'assoc-string' and 'compare-strings' · 4395aaac
      Eli Zaretskii authored
      * src/minibuf.c (Fassoc_string): Clarify how CASE-FOLD affects the
      string comparison.  (Bug#23833)
      * src/fns.c (Fcompare_strings): Fix the description of how
      IGNORE-CASE affects the comparison.
      
      * doc/lispref/strings.texi (Text Comparison): Clarify how
      CASE-FOLD affects the string comparison in 'assoc-string'.  Fix
      the description of how IGNORE-CASE affects the comparison in
      'compare-strings'.
      4395aaac
  12. 01 May, 2016 2 commits
  13. 30 Apr, 2016 2 commits
    • Lars Ingebrigtsen's avatar
      Have the doc strings of `load-path' and `require' mention each other · 3eca9a03
      Lars Ingebrigtsen authored
      * src/fns.c (Frequire): Mention `load-path' and fill the doc
      string (bug#18829).
      
      * src/lread.c (syms_of_lread): Mention that `require' uses
      `load-path'.
      3eca9a03
    • Eli Zaretskii's avatar
      Fix the MSDOS build · ccdaf04c
      Eli Zaretskii authored
      * config.bat:
      * msdos/sedlisp.inp:
      * msdos/sedlibmk.inp:
      * msdos/sedleim.inp:
      * msdos/sedadmin.inp:
      * msdos/sed6.inp:
      * msdos/sed3v2.inp:
      * msdos/sed2v2.inp:
      * msdos/sed1v2.inp: Adapt to Emacs 25.
      
      * src/process.c (remove_slash_colon): Move out of "#ifdef
      subprocesses" block, as it its called unconditionally.  Move
      ADD_SUBFEATURE calls into "#ifdef subprocesses" block, as they
      reference variables only defined in that block.
      * src/msdos.h: Provide prototypes for IT_set_frame_parameters,
      faccessat, msdos_fatal_signal, syms_of_msdos, pthread_sigmask,
      dos_keysns, dos_keyread, run_msdos_command, and
      syms_of_win16select, to avoid compiler warnings.
      * src/msdos.c (SYS_ENVIRON): Define to either '_environ' or
      'environ', depending on the DJGPP version.
      Remove declarations of externally-visible Lisp objects, like
      Qbackground_color and Qreverse.
      (run_msdos_command): First argument is not signed, not unsigned.
      Use SYS_ENVIRON.
      (sys_select): Use 'timespec_cmp' instead of 'timespec_sign', as
      the latter doesn't work when 'time_t' is an unsigned data type.
      This caused idle timers to behave incorrectly: they only fired
      after a keyboard input event.
      * src/frame.c (adjust_frame_size) [MSDOS]: Account for
      FRAME_TOP_MARGIN that isn't counted in the frame's number of
      lines, but dos_set_window_size needs it to be added.
      * src/lread.c (INFINITY, NAN) [DJGPP < 2.05]: Provide definitions.
      * src/fns.c (sort_vector_copy) [__GNUC__ < 4]: Provide a prototype
      that works around compilation errors with older GCC versions.
      * src/w16select.c: Don't declare QCLIPBOARD and QPRIMARY as Lisp
      Objects.
      * src/filelock.c [MSDOS]: Ifdef away most of the code.  Provide
      no-op implementations for 'lock_file' and 'unlock_file'.
      (Ffile_locked_p) [MSDOS]: Always return nil.  This avoids multiple
      ifdefs in all users of filelock.c functionality.
      * src/conf_post.h (EOVERFLOW, SIZE_MAX) [DJGPP < 2.04]: Define.
      * src/emacs.c [MSDOS]: Include dosfns.h, to avoid compiler
      warnings.
      * src/dosfns.h: Provide prototypes for dos_cleanup,
      syms_of_dosfns, and init_dosfns.
      * src/deps.mk (atimer.o): Depend on msdos.h.
      (emacs.o): Depend on dosfns.h.
      * src/atimer.c [MSDOS]: Include msdos.h, to avoid compiler
      warnings.
      
      * lisp/window.el (window--adjust-process-windows): Skip the body
      if 'process-list' is not available.  This avoids failure to start
      up on MS-DOS.
      * lisp/vc/diff.el (diff-no-select): Test 'make-process', not
      'start-process', as the latter is now available on all platforms.
      * lisp/textmodes/ispell.el (ispell-async-processp): Replace
      'start-process' with 'make-process' in a comment.
      * lisp/term/internal.el (IT-unicode-translations): Modify and add
      a few translations to display Info files with Unicode markup.  Fix
      an ancient off-by-one mismatch error with Unicode codepoints.
      * lisp/progmodes/compile.el (compilation-start): Test
      'make-process', not 'start-process', as the latter is now
      available on all platforms.
      * lisp/man.el (Man-build-man-command, Man-getpage-in-background):
      Test 'make-process', not 'start-process', as the latter is now
      available on all platforms.
      * lisp/international/mule-cmds.el (set-coding-system-map): Test
      'make-process', not 'start-process', as the latter is now
      available on all platforms.
      * lisp/eshell/esh-cmd.el (eshell-do-pipelines-synchronously): Doc
      fix.
      (eshell-execute-pipeline): Test 'make-process', not
      'start-process', as the latter is now available on all platforms.
      ccdaf04c
  14. 08 Apr, 2016 2 commits
    • Paul Eggert's avatar
      Minor improvements for hash function primitives · 6b0d58be
      Paul Eggert authored
      * src/fns.c (hashfn_eql): Define in terms of hashfn_equal and
      hashfn_eq rather than reaching inside them.
      (hashtest_eq, hashtest_eql, hashtest_equal):
      Now constants with initializers.
      (syms_of_fns): Omit no-longer-needed initialization.
      * src/lisp.h (LISPSYM_INITIALLY): New macro.
      (DEFINE_LISP_SYMBOL): Use it.
      6b0d58be
    • Paul Pogonyshev's avatar
      New primitives sxhash-eq, sxhash-eql · a4aa94d0
      Paul Pogonyshev authored
      * doc/lispref/hash.texi (Defining Hash), etc/NEWS: Document this.
      * lisp/emacs-lisp/byte-opt.el (side-effect-free-fns):
      Add sxhash-equal, sxhash-eq, sxhash-eql.
      * lisp/subr.el (sxhash): Now an alias for sxhash-equal.
      * src/fns.c (Fsxhash_eq, Fsxhash_eql): New functions.n
      a4aa94d0
  15. 04 Apr, 2016 1 commit
    • Paul Eggert's avatar
      New C macro AUTO_STRING_WITH_LEN · 17cb263a
      Paul Eggert authored
      Put a bit less pressure on the garbage collector by defining a
      macro that is like AUTO_STRING but also allows null bytes in strings,
      and by extending AUTO_STRING to work with any unibyte string.
      * src/alloc.c (verify_ascii): Remove; all uses removed.
      AUTO_STRING can now be used on non-ASCII unibyte strings.
      * src/lisp.h (AUTO_STRING): Now allows non-ASCII unibyte strings.
      (AUTO_STRING_WITH_LEN): New macro.
      * src/coding.c (from_unicode_buffer):
      * src/editfns.c (format_time_string):
      * src/emacs-module.c (module_make_string, module_format_fun_env):
      * src/fileio.c (Fexpand_file_name):
      * src/font.c (font_parse_family_registry):
      * src/ftfont.c (ftfont_get_charset):
      * src/keymap.c (silly_event_symbol_error):
      * src/menu.c (single_menu_item):
      * src/sysdep.c (system_process_attributes):
      Use AUTO_STRING_WITH_LEN if possible.
      * src/emacs-module.c (module_make_function):
      * src/fileio.c (report_file_errno, report_file_notify_error):
      * src/fns.c (Flocale_info):
      * src/sysdep.c (system_process_attributes):
      Use AUTO_STRING if possible.  This is doable more often now
      that AUTO_STRING works on any unibyte string.
      17cb263a
  16. 29 Mar, 2016 1 commit
  17. 28 Mar, 2016 1 commit
    • Lars Magne Ingebrigtsen's avatar
      Add a new function `buffer-hash' · 15357f6d
      Lars Magne Ingebrigtsen authored
      * doc/lispref/text.texi (Checksum/Hash): Document `buffer-hash'.
      
      * src/fns.c (Fbuffer_hash): New function.
      (make_digest_string): Refactored out into its own function.
      (secure_hash): Use it.
      
      * test/src/fns-tests.el (fns-tests-hash-buffer): New tests.
      15357f6d
  18. 10 Mar, 2016 1 commit
    • Paul Eggert's avatar
      Rework C source files to avoid ^( · 7352c6c6
      Paul Eggert authored
      Work around Bug#22884 by rewording comments and strings to avoid ‘(’
      at the start of a line unless it starts a function.  This change
      is a short-term hack; in the longer run we plan to fix cc-mode’s
      performance for C files that have ‘(’ at the start of a line in a
      comment or string.
      7352c6c6
  19. 21 Feb, 2016 3 commits
    • Paul Eggert's avatar
      Use Gnulib filevercmp for version comparison · 1f7feeca
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add filevercmp.
      * doc/lispref/strings.texi (Text Comparison):
      * etc/NEWS, src/fns.c:
      * test/src/fns-tests.el (fns-tests-string-version-lessp):
      Rename newly-introduced function to string-version-lessp, by
      analogy with strverscmp.
      * lib/filevercmp.c, lib/filevercmp.h: New files, copied from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * src/fns.c: Include <filevercmp.h>.
      (gather_number_from_string): Remove.
      (Fstring_version_lessp): Reimplement via filevercmp.
      1f7feeca
    • Lars Ingebrigtsen's avatar
      Avoid integer overflows in string-numeric-lessp · 336dac58
      Lars Ingebrigtsen authored
      * src/fns.c (Fstring_numeric_lessp): If we have an integer
      overflow, compare lexicographically.
      336dac58
    • Lars Ingebrigtsen's avatar
      Add the string-numeric-lessp function · 71783e90
      Lars Ingebrigtsen authored
      * doc/lispref/strings.texi (Text Comparison): Document
      `string-numerical-lessp'.
      
      * src/fns.c (Fstring_numeric_lessp): New function.
      (gather_number_from_string): Helper function for that function.
      
      * test/src/fns-tests.el (fns-tests-string-numeric-lessp): Add tests.
      71783e90
  20. 30 Jan, 2016 2 commits
  21. 29 Jan, 2016 1 commit
  22. 19 Jan, 2016 1 commit
  23. 15 Jan, 2016 1 commit
    • Eli Zaretskii's avatar
      Make 'random' seeds cryptographically secure if possible · 3ffe81e2
      Eli Zaretskii authored
      * configure.ac: Check for "/dev/urandom".
      
      * src/sysdep.c (init_random) [HAVE_DEV_URANDOM]: Read the stream
      for the seed from "/dev/urandom".
      [WINDOWSNT]: Obtain the stream for the seed from w32 APIs.
      * src/fns.c (Frandom): Update the doc string to indicate that
      system entropy is used when available.
      * src/w32.c: Include wincrypt.h.
      (w32_init_crypt_random, w32_init_random): New functions, use the
      CryptGenRandom API.
      (globals_of_w32): Initialize w32_crypto_hprov handle to zero.
      * src/w32.h (w32_init_random): Add prototype.
      
      * doc/lispref/numbers.texi (Random Numbers): Document more details
      about 't' as the argument to 'random'.
      
      * etc/NEWS: Mention that '(random t)' now uses a cryptographically
      strong seed if possible.
      
      (Bug#22202)
      3ffe81e2
  24. 01 Jan, 2016 1 commit
  25. 21 Nov, 2015 2 commits
    • Paul Eggert's avatar
      Add a few safety checks when ENABLE_CHECKING · 8afaa132
      Paul Eggert authored
      This was motivated by the recent addition of module code,
      which added some ENABLE_CHECKING-enabled checks that are
      useful elsewhere too.
      * src/alloc.c (compact_font_cache_entry):
      * src/fns.c (sweep_weak_table):
      * src/lread.c (oblookup):
      Use gc_asize rather than doing it by hand.
      * src/emacs-module.c (module_make_global_ref)
      (module_free_global_ref, module_vec_size):
      Omit assertions that lisp.h now checks.
      * src/lisp.h (XFASTINT, ASIZE): In functional implementations,
      check that the result is nonnegative.  Use eassume, as this
      info can help a bit when optimizing production code.
      (XSYMBOL) [!USE_LSB_TAG]: Assert that argument is a symbol,
      to be consistent with the USE_LSB_TAG case.
      (gc_asize): New function, when ASIZE is needed in the gc.
      (gc_aset): Use it.
      (HASH_TABLE_P): Move definition up, so that it can be used ...
      (XHASH_TABLE): ... here, to assert that the arg is a hash table.
      8afaa132
    • Eli Zaretskii's avatar
      Improve documentation of dynamic modules · 3858b794
      Eli Zaretskii authored
      * src/fns.c (Frequire): Doc fix to include the dynamic module
      support.
      * src/lread.c (Fload, Vload_suffixes): Doc fixes to include the
      dynamic module support.
      (Fload): Treat the module suffix the same as '*.el' and '*.elc'
      wrt the MUST-SUFFIX argument.
      
      * etc/NEWS: Expand documentation of dynamically loaded modules.
      3858b794
  26. 18 Nov, 2015 1 commit
    • Philipp Stephani's avatar
      Add catch-all & no-signal version of PUSH_HANDLER · 7cdc5d62
      Philipp Stephani authored
      Ground work for modules. Add a non-signaling version of PUSH_HANDLER and
      a new "catch-all" handler type.
      
      * src/eval.c (init_handler, push_handler, push_handler_nosignal): New
        functions.
      * src/fns.c (hash_remove_from_table): Expose function public.
      * src/lisp.h: New handler type, define macro to push_handler call.
      7cdc5d62
  27. 17 Nov, 2015 1 commit
    • Paul Eggert's avatar
      Fix docstring quoting problems with ‘ '’ · ac16149b
      Paul Eggert authored
      Problem reported by Artur Malabarba in:
      http://lists.gnu.org/archive/html/emacs-devel/2015-11/msg01513.html
      Most of these fixes are to documentation; many involve fixing
      longstanding quoting glitches that are independent of the
      recent substitute-command-keys changes.  The changes to code are:
      * lisp/cedet/mode-local.el (mode-local-augment-function-help)
      (describe-mode-local-overload):
      Substitute docstrings before displaying them.
      * lisp/emacs-lisp/cl-macs.el (cl--transform-lambda):
      Quote the generated docstring for later substitution.
      ac16149b
  28. 15 Nov, 2015 1 commit
    • Stephen Leake's avatar
      Improve a few doc strings, comments · a6843cce
      Stephen Leake authored
      * lisp/cedet/cedet-global.el (cedet-gnu-global-expand-filename):
      * lisp/cedet/ede/locate.el (ede-locate-base):
      * lisp/cedet/semantic/symref.el (semantic-symref-calculate-rootdir):
      * src/fns.c (Fdelq): Improve doc string.
      
      * lisp/progmodes/elisp-mode.el (elisp--xref-find-definitions): Add FIXME.
      a6843cce
  29. 09 Nov, 2015 1 commit
    • Paul Eggert's avatar
      Use INT_ADD_WRAPV etc. to check integer overflow · 10873055
      Paul Eggert authored
      * src/alloc.c (xnmalloc, xnrealloc, xpalloc, Fmake_string):
      * src/buffer.c (record_overlay_string, overlay_strings):
      * src/casefiddle.c (casify_object):
      * src/ccl.c (Fccl_execute_on_string):
      * src/character.c (char_width, c_string_width, lisp_string_width)
      (count_size_as_multibyte, string_escape_byte8):
      * src/coding.c (coding_alloc_by_realloc, produce_chars):
      * src/data.c (arith_driver):
      * src/dispnew.c (realloc_glyph_pool, init_display):
      * src/editfns.c (styled_format):
      * src/fns.c (Ffillarray):
      * src/ftfont.c (ftfont_shape_by_flt):
      * src/gnutls.c (gnutls_hex_string):
      * src/gtkutil.c (get_utf8_string):
      * src/image.c (x_to_xcolors, x_detect_edges, png_load_body):
      * src/keymap.c (Fkey_description):
      * src/lisp.h (SAFE_ALLOCA_LISP):
      * src/term.c (encode_terminal_code):
      * src/tparam.c (tparam1):
      * src/xselect.c (x_property_data_to_lisp):
      * src/xsmfns.c (smc_save_yourself_CB):
      * src/xterm.c (x_term_init):
      When checking for integer overflow, prefer INT_MULTIPLY_WRAPV to
      more-complicated code involving division and/or
      INT_MULTIPLY_OVERFLOW, and similarly for INT_ADD_WRAPV and
      subtraction and/or INT_ADD_OVERFLOW.
      * src/casefiddle.c (casify_object): Simplify multibyte size check.
      * src/character.c: Remove some obsolete ‘#ifdef emacs’s.
      * src/data.c (arith_driver): Also check for division overflow,
      as that’s now possible given that the accumulator can now contain
      any Emacs integer.
      * src/lisp.h (lisp_word_count): Remove; no longer used.
      10873055
  30. 21 Oct, 2015 1 commit
    • Paul Eggert's avatar
      Include-file cleanup for src directory · 63cfb75f
      Paul Eggert authored
      Omit ‘#include "foo.h"’ unless the file needs foo.h (Bug#21707).
      In a few cases, add ‘#include "foo.h"’ if the file needs foo.h
      but does not include it directly.  As a general rule, a source
      file should include foo.h if it needs the interfaces that foo.h
      defines.
      * src/alloc.c: Don’t include process.h.  Include dispextern.h,
      systime.h.
      * src/atimer.c: Don’t include blockinput.h.
      * src/buffer.c: Include coding.h, systime.h.  Don’t include
      keyboard.h, coding.h.
      * src/callint.c: Don’t include commands.h, keymap.h.
      * src/callproc.c: Don’t include character.h, ccl.h, composite.h,
      systty.h, termhooks.h.
      * src/casetab.c: Don’t include character.h.
      * src/category.c: Don’t include charset.h, keymap.h.
      * src/ccl.h: Don’t include character.h.
      * src/character.c: Don’t include charset.h.
      * src/charset.c: Don’t include disptab.h.
      * src/chartab.c: Don’t include ccl.h.
      * src/cm.c: Don’t include frame.h, termhooks.h.
      * src/cmds.c: Don’t include windo...
      63cfb75f
  31. 12 Oct, 2015 1 commit
  32. 16 Sep, 2015 1 commit
    • Paul Eggert's avatar
      Omit unnecessary \ before paren in C docstrings · 032ce1c7
      Paul Eggert authored
      Although \( is needed in docstrings in Elisp code, it is not needed in
      docstrings in C code, since C function definitiions do not start with
      a parenthesis.  The backslashes made the docstrings a bit harder to
      read and to format in columns.  Also, some C docstrings had ( in
      column 1 and this did not appear to be causing any problems.  So,
      simplify C docstrings by replacing \( with ( and \) with ).
      032ce1c7