1. 11 Sep, 2014 2 commits
    • Paul Eggert's avatar
      Pacify --enable-gcc-warnings when no window system is used. · b3ed13e8
      Paul Eggert authored
      These warnings found that subscript error, so they seem worthwhile.
      * composite.c (char_composable_p): Simplify a bit.
      * frame.c (x_set_frame_parameters): Add an IF_LINT.
      * frame.c (x_set_horizontal_scroll_bars, x_set_scroll_bar_height):
      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS):
      * window.c (set_window_scroll_bars):
      Use USE_HORIZONTAL_SCROLL_BARS for simplicity.
      * frame.h [! USE_HORIZONTAL_SCROLL_BARS]:
      Ignore -Wsuggest-attribute=const.
      * window.h (USE_HORIZONTAL_SCROLL_BARS): New macro.
      (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): Use it.
      b3ed13e8
    • Paul Eggert's avatar
      * charset.c (Fget_unused_iso_final_char): Fix subscript error. · fe252976
      Paul Eggert authored
      Use check_iso_charset_parameter instead of doing the checks by hand.
      (check_iso_charset_parameter): Move up.  Check parameters a bit
      more carefully, and return true for 96-char sets.  All callers changed.
      fe252976
  2. 10 Sep, 2014 10 commits
    • Alan Mackenzie's avatar
      CC Mode: revert recent changes and fix bug 17463 (cc-langs.elc gets · c8b22035
      Alan Mackenzie authored
      loaded at run-time).
      * progmodes/cc-langs.el (c-no-parens-syntax-table): Rename the
      c-lang-const to c-make-no-parens-syntax-table and correct the
      logic.
      (c-no-parens-syntax-table): Correct the logic of the c-lang-defvar.
      c8b22035
    • Paul Eggert's avatar
      Simplify lisp.h by removing the __COUNTER__ business. · d1bed1f7
      Paul Eggert authored
      Problem reported by Dmitry Antipov in:
      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00220.html
      * lisp.h (make_local_vector, make_local_string)
      (build_local_string): Simplify by not bothering with __COUNTER__.
      The __COUNTER__ business wasn't working properly, and was needed
      only for hypothetical future expansion anyway.
      d1bed1f7
    • Alp Aker's avatar
      * nsterm.m (ns_draw_fringe_bitmap): Use the same logic as other terms to... · 1014b530
      Alp Aker authored
      * nsterm.m (ns_draw_fringe_bitmap): Use the same logic as other terms to determine bitmap color.  (Bug#18437)
      1014b530
    • Eli Zaretskii's avatar
    • Paul Eggert's avatar
    • Jan Djärv's avatar
      Detect iconified under Compiz/Unity · 8c2dd4db
      Jan Djärv authored
      * xterm.c (handle_one_xevent): Detect iconified by looking at
      _NET_WM_STATE_HIDDEN.
      8c2dd4db
    • Paul Eggert's avatar
      * lisp.h (DEFINE_GDB_SYMBOL_ENUM): Remove. · c9c0610d
      Paul Eggert authored
      These can generate a constant with the correct value but the wrong
      width, which doesn't work as a printf argument.  All uses removed.
      Problem reported by Dmitry Antipov in:
      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00213.html
      (ENUMABLE): Remove; no longer needed.
      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
      Remove; no longer needed because of the above change.
      Each definiens moved to the only use.
      c9c0610d
    • Stefan Monnier's avatar
      CC-mode: Set open-paren-in-column-0-is-defun-start to nil; · 47003633
      Stefan Monnier authored
      plus misc cleanup.
      * lisp/progmodes/cc-mode.el (c-basic-common-init):
      Set open-paren-in-column-0-is-defun-start.
      (adaptive-fill-first-line-regexp, font-lock-syntactic-keywords):
      Remove declarations, unused.
      (run-mode-hooks): Remove declaration.
      (font-lock-defaults): Use plain `defvar' to declare.
      (c-run-mode-hooks): Test existence of run-mode-hooks with fboundp.
      * lisp/progmodes/cc-langs.el (c-filter-ops): Avoid `setq'.
      (c-make-mode-syntax-table): Don't micro-optimize.
      (c-keywords, c-keyword-member-alist): Simplify.
      (c-kwds-lang-consts): Don't eval at compile-time.
      (c-primary-expr-regexp): Comment out unused vars.
      * lisp/progmodes/cc-fonts.el (c-font-lock-context): Declare at top-level.
      (c-font-byte-compile): New var.
      (c--compile): New function.  Use it instead of `byte-compile'.
      (c-cpp-matchers): Quote the value returned by
      `c-make-syntactic-matcher' in case it's not self-evaluating.
      (c-basic-matchers-before): Avoid a plain MATCHER as keyword, wrap it in
      parentheses instead (in case MATCHER happens to be a list).
      (c-font-lock-enum-tail): Remove unused var `start'.
      (c-font-lock-objc-methods): Silence byte-compiler warnings.
      * lisp/progmodes/cc-engine.el (c-syntactic-re-search-forward): Sink an `if'
      test into an argument.
      * lisp/progmodes/cc-defs.el (c-point, c-major-mode-is, c-put-char-property)
      (c-get-char-property): Don't use `eval' just to unquote a constant.
      (c-use-extents): Remove.  Use (featurep 'xemacs), compiled
      more efficiently.
      (c-put-char-property-fun): Don't call `byte-compile' by hand.
      (c-clear-char-property, c-clear-char-properties): Check that `property'
      is a quoted constant.
      (c-emacs-features): Remove `infodock', `syntax-properties', and
      `pps-extended-state' (never used), `8-bit' and `1-bit' (use (featurep
      'xemacs) instead).  Use `with-temp-buffer' and let-bind vars after
      changing buffer, so we don't have to setq them again afterwards.
      (c-lang-const): Remove redundant symbolp assertions.
      (c-find-assignment-for-mode): Use `or'.
      * lisp/Makefile.in (compile-one-process): Remove cc-mode dependency.
      47003633
    • Paul Eggert's avatar
    • Paul Eggert's avatar
      Improve the experimental local and scoped allocation. · 11e28ab0
      Paul Eggert authored
      * configure.ac (HAVE_STRUCT_ATTRIBUTE_ALIGNED)
      (HAVE_STATEMENT_EXPRESSIONS): New configure-time checks.
      * src/alloc.c (local_string_init, local_vector_init):
      New functions, defined if USE_LOCAL_ALLOCATORS.
      Mostly, these are moved here from lisp.h, as it's not
      clear it's worth making them inline.
      * src/lisp.h (USE_STACK_LISP_OBJECTS): Default to false.
      (GCALIGNED): Depend on HAVE_STRUCT_ATTRIBUTE_ALIGNED and
      USE_STACK_LISP_OBJECTS, not on a laundry list.
      (local_string_init, local_vector_init): New decls.
      (union Aligned_Cons): New type.
      (scoped_cons): Use it.  Give up on the char trick, as it's a too
      much of a maintenance hassle; if someone wants this speedup
      they'll just need to convince their compiler to align properly.
      Conversely, use the speedup if struct Lisp_Cons happens to
      be aligned even without a directive.  Better yet, help it along
      by using union Aligned_Cons rather than struct Lisp_Cons.
      (pointer_valid_for_lisp_object): Remove.  This check is not
      necessary, since make_lisp_ptr is already doing it.  All uses removed.
      (local_vector_init, local_string_init): Move to alloc.c.
      (build_local_vector): Remove this awkward macro, replacing with ...
      (make_local_vector): New macro, which acts more like a function.
      Use statement expressions and use __COUNTER__ to avoid macro
      capture.  Fall back on functions if these features are not supported.
      (build_local_string, make_local_string): Likewise.
      11e28ab0
  3. 09 Sep, 2014 6 commits
  4. 08 Sep, 2014 7 commits
  5. 07 Sep, 2014 11 commits
    • Paul Eggert's avatar
      Fix bug uncovered by changing alloca to auto buffer. · 4612d1ea
      Paul Eggert authored
      * coding.c (growable_destination): New function.
      (produce_chars): Use it for sanity checks.  Do not fiddle with
      dst_end if the source and destination are both nil, as it's
      the caller's responsibility to avoid overlap.
      * keyboard.c (read_decoded_event_from_main_queue):
      The destination must be MAX_MULTIBYTE_LENGTH times the max source
      length, not 4 times, to prevent decode_coding_c_string from trying
      to reallocate a destination.  This removes the need for the FIXME.
      
      Fixes: debbugs:18410
      4612d1ea
    • Paul Eggert's avatar
      * callproc.c (exec_failed) [DOS_NT]: Define a dummy. · d5e25ad1
      Paul Eggert authored
      All callers simplified.  Add a comment about exec_failed, vfork,
      and alloca.
      d5e25ad1
    • Paul Eggert's avatar
      Adjust drag-and-drop fix when window is above top. · bee40718
      Paul Eggert authored
      * xselect.c (x_fill_property_data): Don't let sign bit of negative
      XCDR bleed into XCAR's encoded value.  Improve checks for
      out-of-range data while we're at it.
      
      Fixes: debbugs:18383
      bee40718
    • Jan Djärv's avatar
      * xselect.c (x_fill_property_data): Handle negative XCDR when data · eee8ec84
      Jan Djärv authored
      is CONSP.
      
      Fixes: debbugs:18303
      eee8ec84
    • Eli Zaretskii's avatar
      Fix bug #18419 with disappearing line numbers when minibuffer is resized. · 938aed6e
      Eli Zaretskii authored
       src/dispnew.c (prepare_desired_row): When MODE_LINE_P is zero,
       always make sure the marginal areas of the row are in sync with
       what the window wants.
      938aed6e
    • Eli Zaretskii's avatar
      Fix the MS-Windows build broken by SAFE_ALLOCA changes. · 970d21e8
      Eli Zaretskii authored
       src/callproc.c (child_setup) [WINDOWSNT]: Don't call exec_failed if
       'alloca' gets passed arguments larger than MAX_ALLOCA.
       src/font.c (MAX): Define if not defined elsewhere.
      970d21e8
    • Paul Eggert's avatar
      * keyboard.c (read_decoded_event_from_main_queue): Reinstitute alloca · 2b95a8ef
      Paul Eggert authored
      here for destination buffer, to work around what appears to be a
      bug in decode_coding_c_string when the source and destination are
      both C strings.
      
      * keyboard.c (echo_add_key, menu_bar_items, tool_bar_items)
      2b95a8ef
    • Michael Albinus's avatar
      * strings.texi (Text Comparison): Describe `string-collate-equalp' · d3cb31cb
      Michael Albinus authored
      and `string-collate-lessp'.
      d3cb31cb
    • Paul Eggert's avatar
      Expand @AM_DEFAULT_VERBOSITY@ even if Automake is old. · 6726de52
      Paul Eggert authored
      * configure.ac: Assume verbose output for older Automake.
      
      Fixes: debbugs:18415
      6726de52
    • Michael Albinus's avatar
      * automated/fns-tests.el (fns-tests--collate-enabled-p): New function. · 47ae4ce3
      Michael Albinus authored
      (fns-tests-collate-strings, fns-tests-collate-sort): Use it.
      47ae4ce3
    • Paul Eggert's avatar
      Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. · b3bf18b3
      Paul Eggert authored
      This follows up on the recent thread in emacs-devel on alloca; see:
      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00042.html
      This patch also cleans up alloca-related glitches noted while
      examining the code looking for unbounded alloca.
      * alloc.c (listn):
      * callproc.c (init_callproc):
      Rewrite to avoid need for alloca.
      * buffer.c (mouse_face_overlay_overlaps)
      (report_overlay_modification):
      * buffer.h (GET_OVERLAYS_AT):
      * coding.c (make_subsidiaries):
      * doc.c (Fsnarf_documentation):
      * editfns.c (Fuser_full_name):
      * fileio.c (Ffile_name_directory, Fexpand_file_name)
      (search_embedded_absfilename, Fsubstitute_in_file_name):
      * fns.c (Fmake_hash_table):
      * font.c (font_vconcat_entity_vectors, font_update_drivers):
      * fontset.c (fontset_pattern_regexp, Ffontset_info):
      * frame.c (Fmake_terminal_frame, x_set_frame_parameters)
      (xrdb_get_resource, x_get_resource_string):
      * ftfont.c (ftfont_get_charset, ftfont_check_otf, ftfont_drive_otf):
      * ftxfont.c (ftxfont_draw):
      * image.c (xbm_load, xpm_load, jpeg_load_body):
      * keyboard.c (echo_add_key, menu_bar_items, tool_bar_items):
      * keymap.c (Fdescribe_buffer_bindings, describe_map):
      * lread.c (openp):
      * menu.c (digest_single_submenu, find_and_call_menu_selection)
      (find_and_return_menu_selection):
      * print.c (PRINTFINISH):
      * process.c (Fformat_network_address):
      * scroll.c (do_scrolling, do_direct_scrolling, scrolling_1):
      * search.c (search_buffer, Fmatch_data, Fregexp_quote):
      * sound.c (wav_play, au_play):
      * syntax.c (skip_chars):
      * term.c (tty_menu_activate, tty_menu_show):
      * textprop.c (get_char_property_and_overlay):
      * window.c (Fset_window_configuration):
      * xdisp.c (safe__call, next_overlay_change, vmessage)
      (compute_overhangs_and_x, draw_glyphs, note_mouse_highlight):
      * xfaces.c (face_at_buffer_position):
      * xmenu.c (x_menu_show):
      Use SAFE_ALLOCA etc. instead of plain alloca, since the
      allocation size isn't bounded.
      * callint.c (Fcall_interactively): Redo memory_full check
      so that it can be done at compile-time on some platforms.
      * coding.c (MAX_LOOKUP_MAX): New constant.
      (get_translation_table): Use it.
      * callproc.c (call_process): Use SAFE_NALLOCA instead of
      SAFE_ALLOCA, to catch integer overflows on size calculation.
      (exec_failed) [!DOS_NT]: New function.
      (child_setup) [!DOS_NT]: Use it.
      * editfns.c (Ftranspose_regions):
      Hoist USE_SAFE_ALLOC + SAFE_FREE out of 'if'.
      * editfns.c (check_translation):
      Allocate larger buffers on the heap.
      * eval.c (internal_lisp_condition_case):
      Check for MAX_ALLOCA overflow.
      * fns.c (sort_vector): Use SAFE_ALLOCA_LISP rather than Fmake_vector.
      (Fbase64_encode_region, Fbase64_decode_region):
      Avoid unnecessary calls to SAFE_FREE before 'error'.
      * buffer.c (mouse_face_overlay_overlaps):
      * editfns.c (Fget_pos_property, check_translation):
      * eval.c (Ffuncall):
      * font.c (font_unparse_xlfd, font_find_for_lface):
      * ftfont.c (ftfont_drive_otf):
      * keyboard.c (echo_add_key, read_decoded_event_from_main_queue)
      (menu_bar_items, tool_bar_items):
      * sound.c (Fplay_sound_internal):
      * xdisp.c (load_overlay_strings, dump_glyph_row):
      Use an ordinary auto buffer rather than alloca, since the
      allocation size is fixed and small.
      * ftfont.c: Include <c-strcase.h>.
      (matching_prefix): New function.
      (get_adstyle_property): Use it, to avoid need for alloca.
      * keyboard.c (echo_add_key):
      * keymap.c (describe_map): Use ptrdiff_t, not int.
      * keyboard.c (echo_add_key): Prefer sizeof to strlen.
      * keymap.c (Fdescribe_buffer_bindings): Use SBYTES, not SCHARS,
      when counting bytes.
      * lisp.h (xlispstrdupa): Remove, replacing with ...
      (SAFE_ALLOCA_STRING): ... new macro with different API.
      This fixes a portability problem, namely, alloca result
      passed to another function.  All uses changed.
      (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Check for MAX_ALLOCA,
      not MAX_ALLOCA - 1.
      * regex.c (REGEX_USE_SAFE_ALLOCA, REGEX_SAFE_FREE)
      (REGEX_ALLOCATE): New macros.
      (REGEX_REALLOCATE, REGEX_ALLOCATE_STACK, REGEX_REALLOCATE_STACK)
      (REGEX_FREE_STACK, FREE_VARIABLES, re_match_2_internal):
      Use them.
      * xdisp.c (message3): Use SAFE_ALLOCA_STRING rather than doing it
      by hand.
      (decode_mode_spec_coding): Store directly into buf rather than
      into an alloca temporary and copying the temporary to the buf.
      
      Fixes: debbugs:18410
      b3bf18b3
  6. 06 Sep, 2014 2 commits
    • Eli Zaretskii's avatar
      Remove unused variable EMACS_HEAPSIZE from src/Makefile.in. · 930fb80f
      Eli Zaretskii authored
       src/Makefile.in (EMACS_HEAPSIZE): Remove, no longer used.  (Bug#18416)
       ChangeLog: Mention explicitly the removal of EMACS_HEAPSIZE.
      930fb80f
    • Leo Liu's avatar
      Add vector qpattern to pcase · e872d52c
      Leo Liu authored
      * doc/lispref/control.texi (Pattern matching case statement): Document vector
      qpattern. 
      
      * etc/NEWS: Mention vector qpattern for pcase.  (Bug#18327).
      
      * lisp/emacs-lisp/pcase.el (pcase): Doc fix.
      (pcase--split-vector): New function.
      (pcase--q1): Support vector qpattern.  (Bug#18327)
      e872d52c
  7. 05 Sep, 2014 2 commits