1. 23 Apr, 2019 14 commits
    • Stefan Monnier's avatar
      26f9a77f
    • Paul Eggert's avatar
      Remove font.c code commented out for a decade · 64d0cd98
      Paul Eggert authored
      * src/font.c (LSTRING_HEADER_SIZE, LSTRING_GLYPH_SIZE, check_gstring)
      (check_otf_features, otf_list, otf_tag_symbol, otf_open)
      (font_otf_capability, generate_otf_features)
      (font_otf_DeviceTable, font_otf_ValueRecord)
      (font_otf_Anchor, Ffont_drive_otf, Ffont_otf_alternates)
      (Fdraw_string, syms_of_font): Remove "experimental and not
      tested much" code that has been "#if 0"-ed out for more than a
      decade and which was getting in the way of maintenance.
      64d0cd98
    • Philipp Stephani's avatar
      Use three-argument form for out-of-range errors. · 259dfd20
      Philipp Stephani authored
      This provides more debugging hints for callers.
      
      * src/emacs-module.c (module_copy_string_contents): Use three-argument
      form of args-out-of-range.
      259dfd20
    • Philipp Stephani's avatar
      Use high-level integer conversion macro in a few cases. · eaea40b3
      Philipp Stephani authored
      INT_TO_INTEGER is more obviously correct and means we don’t have to
      worry about data type sizes and signedness.
      
      * src/json.c (json_parse_error): Use INT_TO_INTEGER.  The tiny
      performance gain of make_fixed_natnum isn’t worth the trouble then
      signaling an error.
      eaea40b3
    • Mattias Engdegård's avatar
      Rename auto-revert-notify-watch-descriptor-hash-list · ecab8835
      Mattias Engdegård authored
      * lisp/autorevert.el
      (auto-revert-notify-watch-descriptor-hash-list):
      Rename to auto-revert--buffers-by-watch-descriptor.  Improved doc string.
      (auto-revert-notify-rm-watch, auto-revert-notify-add-watch,
      auto-revert-notify-handler): Use new name.
      ecab8835
    • Michael Albinus's avatar
      Remote processes cannot use a pipe process for stderr · e8c07cae
      Michael Albinus authored
      * doc/lispref/processes.texi (Asynchronous Processes):
      (Accepting Output): Remote processes cannot use a pipe process for
      stderr.
      e8c07cae
    • Philipp Stephani's avatar
      d9d592dd
    • Eli Zaretskii's avatar
      Speed up JSON parsing · db2c9308
      Eli Zaretskii authored
      Thanks to Dmitry Gutov <dgutov@yandex.ru> for running many
      benchmarks and for useful discussions.
      * src/json.c (json_make_string): Speed up parsing of JSON
      strings by optimizing the normal case of a valid UTF-8 string
      being returned from libjansson.  (Bug#31138)
      db2c9308
    • Philipp Stephani's avatar
      Small fix for a JSON unit test. · b59429a4
      Philipp Stephani authored
      * test/src/json-tests.el (json-parse-string/null): Make JSON object
      syntactically valid.  This test is supposed to check whether an
      escaped null character causes an error, but without quoting the string
      it would be syntactically invalid in any case.
      b59429a4
    • Alan Mackenzie's avatar
      Optimize for typing characters into long C++ raw strings. · 0d5caa9a
      Alan Mackenzie authored
      * lisp/progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare)
      (c-font-lock-objc-methods) (c-font-lock-declarations, c-font-lock-enum-tail)
      (c-font-lock-cut-off-declarators, c-font-lock-enclosing-decls): If the chunk
      been fontified consists entirely of comments and strings, don't attempt to
      perform the function's action.
      
      * lisp/progmodes/cc-mode.el (c-before-change-check-unbalanced-strings): Don't
      expand (c-new-BEG c-new-END) unnecessarily to the entire raw string being
      fontified.
      (c-fl-decl-start, c-fl-decl-end): When in a (raw or otherwise) string, don't
      return a position outside of the string (which used to cause unneeded
      fontification).
      0d5caa9a
    • YAMAMOTO Mitsuharu's avatar
      Release xft_data in widget destroy callback to avoid visual distraction · 085929ca
      YAMAMOTO Mitsuharu authored
      * lwlib/lwlib-int.h (struct _widget_instance) [HAVE_XFT]: Remove nr_xft_data.
      * lwlib/lwlib-Xaw.c (find_xft_data, xaw_update_one_widget) [HAVE_XFT]: Loop
      while widget member is not NULL instead of using nr_xft_data.
      (xaw_destroy_instance) [HAVE_XFT]: Move xft_data release code from here ...
      (destroy_xft_data) [HAVE_XFT]: ... to here.
      (make_dialog) [HAVE_XFT]: Add destroy_xft_data as destroy callback for dialog.
      085929ca
    • Paul Eggert's avatar
      Let plain ‘make’ work even not GNU Make · 6fa8d3c8
      Paul Eggert authored
      * Makefile.in (top_distclean): Clean makefile as well as Makefile.
      * configure.ac: If not using plain ‘make’, create a makefile
      so that plain ‘make’ simply calls $(MAKE).
      6fa8d3c8
    • Paul Eggert's avatar
      Revert Vinternal_interpreter_environment tweak · 7cc66173
      Paul Eggert authored
      Stefan Monnier pointed out examples like (funcall `(closure
      ,(let ((cycle (list nil))) (setcdr cycle cycle)) () a)),
      where the user can set Vinternal_interpreter_environment
      indirectly.
      * src/eval.c (Fsetq): Revert recent change, going back to Fassq.
      7cc66173
    • Paul Eggert's avatar
      Improve UBSan discussion in etc/DEBUG · 27540be5
      Paul Eggert authored
      * etc/DEBUG: Improve -gdwarf-N documentation.
      Go into more detail about UndefinedBehaviorSanitizer.
      27540be5
  2. 22 Apr, 2019 23 commits
    • Paul Eggert's avatar
      Tweak Vinternal_interpreter_environment lookup · b8e7be28
      Paul Eggert authored
      * src/eval.c (Fsetq, eval_sub): Use assq_no_quit instead
      of Fassq for a list that cannot contain cycles or be that long.
      b8e7be28
    • Paul Eggert's avatar
      Improve wur coverage on older GCCs · 88824197
      Paul Eggert authored
      * src/conf_post.h (__has_attribute_warn_unused_result):
      New macro for compilers lacking __has_attribute.
      * src/systhread.h (__has_attribute): Remove ineffective define.
      (ATTRIBUTE_WARN_UNUSED_RESULT): Work better on GCC 3.4 thru 4.
      88824197
    • Paul Eggert's avatar
      Go back to old way of checking json int range · 4bf3c949
      Paul Eggert authored
      Although the lisp.h macros really need improvement,
      INTEGER_TO_INT is not the right way to go about it, as it
      causes conversion from intmax_t to uintmax_t and back again,
      which can cause a signal if the value is negative.
      * src/lisp.h (INTEGER_TO_INT, ranged_integer_to_int)
      (ranged_integer_to_uint): Remove, reverting recent changes to
      this file.
      * src/json.c (lisp_to_json): Revert to previous code,
      as the change messes up with uintmax_t<->intmax_t conversion.
      4bf3c949
    • Philipp Stephani's avatar
      * src/lisp.h (INTEGER_TO_INT): Fix bug. · 981470e3
      Philipp Stephani authored
      981470e3
    • Mattias Engdegård's avatar
      Precise handling of filenotify `stopped' events · 11e75b03
      Mattias Engdegård authored
      * lisp/autorevert.el (auto-revert-notify-handler):
      When getting a `stopped' event, deal with it for the buffers it applies to,
      rather than for all buffers in auto-revert mode.
      11e75b03
    • Mattias Engdegård's avatar
    • Mattias Engdegård's avatar
      Revert "Don't remove notify descriptor that is already gone" · 87d1dc19
      Mattias Engdegård authored
      This reverts commit e9e807e9,
      which is no longer necessary as `file-notify-rm-watch' has been
      made robust against reentry.
      87d1dc19
    • Mattias Engdegård's avatar
      Make file-notify-rm-watch robust against reentry · c243aabf
      Mattias Engdegård authored
      Allow file-notify callbacks to call `file-notify-rm-watch', harmlessly,
      after receiving a `stopped' event without triggering recursion.
      
      * lisp/filenotify.el (file-notify--watch): Note that `callback' can be nil.
      (file-notify--rm-descriptor): Set the `callback' field to nil before
      sending `stopped'.
      (file-notify-rm-watch): Don't do anything if the `callback' field is nil.
      c243aabf
    • Philipp Stephani's avatar
      Introduce a helper macro to convert a Lisp integer to a C integer. · 4e2ea400
      Philipp Stephani authored
      This is similar to CONS_TO_INTEGER.  The inverse (INT_TO_INTEGER)
      already exists.
      
      * src/lisp.h (INTEGER_TO_INT): New macro.
      (ranged_integer_to_int, ranged_integer_to_uint): New
      functions.
      
      * src/json.c (lisp_to_json): Use helper macro.
      4e2ea400
    • Philipp Stephani's avatar
      Improve documentation around standard error pipes (Bug#35328). · 3b4e312c
      Philipp Stephani authored
      * doc/lispref/processes.texi (Asynchronous Processes): Document
      existence and properties of the standard error process.
      (Accepting Output): Document that one has to accept output from the
      standard error process separately.
      3b4e312c
    • Philipp Stephani's avatar
      Module API: Don’t require null-terminated strings in make_string. · f9659e64
      Philipp Stephani authored
      * emacs-module.c (module_make_string): Use make_unibyte_string, which
      doesn’t require its argument to be null-terminated.  Since it always
      returns a heap-allocated string, we don’t have to copy it any more
      while decoding.
      (module_decode): New helper function.
      f9659e64
    • Philipp Stephani's avatar
      Use utf-8-unix for coding system conversions in the module API. · ca3ad974
      Philipp Stephani authored
      Factor out conversions into helper functions to provide a simpler
      interface.
      
      * src/emacs-module.c (module_encode, module_decode_copy): New helper
      functions.
      (module_make_function, module_copy_string_contents)
      (module_make_string): Use them.
      ca3ad974
    • Basil L. Contovounesios's avatar
      Improve pure and side-effect-free docs · 4430a9b5
      Basil L. Contovounesios authored
      For discussion, see thread starting at:
      https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg00316.html
      * doc/lispref/customize.texi (Composite Types): Do not overspecify
      :match-alternatives predicates.
      * doc/lispref/eval.texi (Intro Eval): Anchor definition of "side
      effect" for cross-referencing...
      * doc/lispref/functions.texi (What Is a Function): ...from here.
      Define what a pure function is.
      * doc/lispref/internals.texi (Writing Emacs Primitives): Describe
      currently preferred approach to marking primitives as pure and
      side-effect-free.
      * doc/lispref/symbols.texi (Standard Properties): Expand description
      of pure and side-effect-free properties.
      4430a9b5
    • Philipp Stephani's avatar
      Refactoring: Inline a few macros. · a2a51b4e
      Philipp Stephani authored
      Now that CATCHER_ALL catches signals as well, we can simplify
      MODULE_HANDLE_NONLOCAL_EXIT a bit.
      
      * src/emacs-module.c (MODULE_SETJMP, MODULE_SETJMP_1): Remove.
      (MODULE_HANDLE_NONLOCAL_EXIT): Inline MODULE_SETJMP and
      MODULE_SETJMP_1.
      a2a51b4e
    • Eli Zaretskii's avatar
      4ec02445
    • Michael Albinus's avatar
      Some changes in tramp-tests · 02894982
      Michael Albinus authored
      * test/lisp/net/tramp-tests.el (tramp-test32-shell-command):
      Check for backward compatibility.
      (tramp-test33-environment-variables): Apply a better check for
      unset variable.
      02894982
    • Paul Eggert's avatar
      Mention AddressSanitizer etc. in etc/DEBUG · b20d8a93
      Paul Eggert authored
      * etc/DEBUG: Modernize for AddressSanitizer etc.
      * etc/NEWS: Defer to etc/DEBUG for this.
      b20d8a93
    • Paul Eggert's avatar
      Remove --enable-checking=xmallocoverrun · 1ea048f6
      Paul Eggert authored
      It doesn’t work anymore, and these days ‘gcc -fsanitize=address’
      does a better job anyway.
      * configure.ac: Remove the option.
      * configure.ac (ac_xmalloc_overrun, XMALLOC_OVERRUN_CHECK):
      * src/alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD)
      (XMALLOC_OVERRUN_CHECK_SIZE, XMALLOC_OVERRUN_SIZE_SIZE)
      (xmalloc_overrun_check_header, xmalloc_overrun_check_trailer)
      (xmalloc_put_size, xmalloc_get_size, overrun_check_malloc)
      (overrun_check_realloc, overrun_check_free):
      Remove.  All uses removed.
      * etc/NEWS: Mention this.
      1ea048f6
    • Paul Eggert's avatar
      Remove --enablechecking=conslist configure option · 72067661
      Paul Eggert authored
      * configure.ac: Remove the option.
      * configure.ac (ac_gc_check_cons_list, GC_CHECK_CONS_LIST):
      * src/alloc.c (check_cons_list) [GC_CHECK_CONS_LIST]:
      * src/lisp.h (lisp_h_check_cons_list, check_cons_list):
      Remove.  All uses removed.
      * etc/NEWS: Mention this.
      72067661
    • Paul Eggert's avatar
      Simplify XPNTR · 418400ab
      Paul Eggert authored
      Because XPNTR now uses ATTRIBUTE_NO_SANITIZE_UNDEFINED,
      it can be simplified.
      * src/alloc.c (macro_PNTR_ADD, PNTR_ADD, macro_XPNTR): Remove.
      (XPNTR): Open-code rather than using the removed macros and
      functions.  Also, simplify by using LISP_WORD_TAG.
      418400ab
    • Paul Eggert's avatar
      Fix drain_reloc_list alignment bug · e85bff0b
      Paul Eggert authored
      * src/pdumper.c (dump_charset): Use alignof (struct charset),
      not alignof (int), since struct charset might be more strictly
      aligned than int.  I think this is just a minor performance
      issue, but we might as well use the correct alignment.
      (drain_reloc_list): Use an alignment instead of a size for the
      output alignment.  This prevents undefined behavior when
      alignof (struct emacs_reloc) == 8 and sizeof (dump_off) == 4
      when building on x86-64 with gcc -fsanitize=undefined.
      e85bff0b
    • Paul Eggert's avatar
      Port dump_bitset_clear to -fsanitize=undefined · 4a5ed6b0
      Paul Eggert authored
      * src/pdumper.c (dump_bitset_clear):
      Pacify -fsanitize=undefined by avoiding memset (NULL, x, 0),
      which strictly speaking has undefined behavior although it
      works on all production platforms I know.
      4a5ed6b0
    • Paul Eggert's avatar
      Port to recent gcc -fsanitize=undefined · f67bc3f1
      Paul Eggert authored
      * src/alloc.c (XPNTR): Add ATTRIBUTE_NO_SANITIZE_UNDEFINED and
      remove ATTRIBUTE_UNUSED.  Do not define as a macro, so that
      ATTRIBUTE_NO_SANITIZE_UNDEFINED works.
      * src/lisp.h (lisp_h_XSYMBOL): Remove.  All uses removed.
      With recent GCC the macro does not work with -fsanitize=undefined,
      and the macro can be omitted as its only function is to optimize -O0.
      f67bc3f1
  3. 21 Apr, 2019 3 commits
    • Basil L. Contovounesios's avatar
      Move side-effect-free from unsafep.el to subr.el · 3a618e5f
      Basil L. Contovounesios authored
      * lisp/emacs-lisp/unsafep.el: Move side-effect-free property setting
      from here...
      * lisp/subr.el: ...to here, as function declarations for modularity.
      3a618e5f
    • Paul Eggert's avatar
      Fix double-free in pdumper · 2ea55c27
      Paul Eggert authored
      Revert the double-free bug that I introduced in
      2019-03-11T15:20:54Z!eggert@cs.ucla.edu.
      * src/pdumper.c (dump_mmap_reset): Do not free the private member;
      that’s the release function’s job.
      (dump_mm_heap_cb_release): Free cb if its refcount goes to zero.
      (dump_mmap_contiguous_heap): Mention memory leak in comment.
      2ea55c27
    • Glenn Morris's avatar
      Merge from origin/emacs-26 · d9664f0d
      Glenn Morris authored
      9d7e08dd (origin/emacs-26) Avoid false positives and false negatives o...
      75b589c7 Fix markup related to quoting in Info
      fd6ff295 Merge branch 'emacs-26' of git.savannah.gnu.org:/srv/git/emac...
      cd2204f0 Add a package: line to c-submit-bug-report.
      a992dcab ; Remove empty NEWS sections
      ea672707 ; Add NEWS sections for 26.3
      45b09460 ; Bump Emacs version to 26.2.50
      aae8cc33 * admin/admin.el (set-version): Add NEWS headers for a .50 ve...
      d9664f0d