1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-01 01:41:01 -08:00
Commit graph

15040 commits

Author SHA1 Message Date
Paul Eggert
cb8e2bfba7 Fix SAFE_ALLOCA to not exhaust the stack when in a loop.
Problem reported by Dmietry Antipov in thread leading to:
http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00713.html
This patch fixes only SAFE_ALLOCA, SAFE_NALLOCA, and SAFE_ALLOCA_LISP;
the experimental local_* macros enabled by USE_LOCAL_ALLOCATORS
remain unfixed.
* callproc.c (call_process): Save and restore sa_avail.
* lisp.h (USE_SAFE_ALLOCA): Define sa_avail.
(AVAIL_ALLOCA): New macro.
(SAFE_ALLOCA, SAFE_NALLOCA, SAFE_ALLOCA_LISP):
Use it, and check against sa_avail rather than MAX_ALLOCA.
2014-09-22 22:42:47 -07:00
Stefan Monnier
9949231fb0 Merge from emacs-24 2014-09-22 15:20:45 -04:00
Eli Zaretskii
f11af8a48c Fix bug #18516 with SIGSEGV in expand-file-name.
src/fileio.c (Fexpand_file_name) [DOS_NT]: Make sure newdirlim is
 always set to a valid value.  Make sure the size passed to alloca
 is always positive.
2014-09-22 17:37:22 +03:00
Dmitry Antipov
99c3fad7d4 Avoid extra call to oblookup when interning symbols.
* lisp.h (intern_driver): Add prototype.
* lread.c (intern_driver): New function.
(intern1, intern_c_string_1, Fintern):
* font.c (font_intern_prop):
* w32font.c (intern_font_name): Use it.
2014-09-22 10:06:19 +04:00
Dmitry Antipov
fc5ebc3f49 On OSX, do not free font-specific data more than once (Bug#18501).
* macfont.m (macfont_close): Release and free font-specific data
only if it wasn't previously freed.
2014-09-22 09:34:05 +04:00
Paul Eggert
f135e94e4e Minor improvements to new stack-allocated Lisp objects.
* frame.h (FRAME_PARAMETER):
Prefer scoped_list1 to local_list1 where either would do.
* lisp.h (scoped_list4): New macro.
(local_cons, local_list1, local_list2, local_list3, local_list4)
(make_local_vector, make_local_string, build_local_string):
Prefer functions to macros where either would do.
* xdisp.c (build_desired_tool_bar_string):
Prefer scoped_list4 to local_list4 where either would do.
2014-09-21 15:49:24 -07:00
David Caldwell
63126683db * configure.ac: Increase headerpad_extra to 1000, update the comment
about load commands.

* src/unexmacosx.c (dump_it): Improve error message.

Fixes: debbugs:18505
2014-09-21 22:35:22 +02:00
Juri Linkov
3a449b759c * src/image.c (imagemagick_load_image): Add delay to imagemagick metadata.
(Bug#10747, bug#18334)
2014-09-18 23:59:55 +03:00
Eli Zaretskii
41932b21a2 Clarify the doc strings of mouse-position and set-mouse-position.
src/frame.c (Fmouse_position, Fset_mouse_position): Clarify the
 units in which the position is measured.  (Bug#18493)
2014-09-18 20:20:57 +03:00
Eli Zaretskii
a810675374 Fix bug #18490 with redisplay of other windows showing a narrowed buffer.
src/xdisp.c (redisplay_internal): Force redisplay of all windows
 that show a buffer whose narrowing has changed.
2014-09-18 18:10:33 +03:00
Dmitry Antipov
3cab7dd46f More and more stack-allocated Lisp objects if USE_LOCAL_ALLOCATORS.
* lisp.h (local_list4) [USE_LOCAL_ALLOCATORS]: New macro.
[!USE_LOCAL_ALLOCATORS]: Fall back to regular list4.
* frame.h (FRAME_PARAMETER): New macro.
* dispnew.c (init_display):
* fontset.c (Fset_fontset_font):
* frame.c (x_default_parameter):
* xfaces.c (set_font_frame_param, Finternal_merge_in_global_face):
* xfns.c (x_default_scroll_bar_color_parameter)
(x_default_font_parameter, x_create_tip_frame): Use it.
* editfns.c (Fpropertize): Use local_cons.
* process.c (status_message): Use build_local_string.
* xfont.c (xfont_open): Use make_local_string.
* xdisp.c (build_desired_tool_bar_string): Use local_list4.
2014-09-18 15:34:24 +04:00
Paul Eggert
e8be4f442b Port USE_LOCAL_ALLOCATORS code to clang 3.4 x86-64.
Revert previous lisp.h change, and install the following instead.
* lisp.h (USE_LOCAL_ALLOCATORS): Define only if __GNUC__ &&
!__clang__.  This works with GCC and with clang and is safer for
compilers we don't know about.
2014-09-17 22:40:17 -07:00
Paul Eggert
bb95ed98f4 Port USE_LOCAL_ALLOCATORS code to clang 3.4 x86-64.
* lisp.h (ALLOCA_FIXUP): New constant.
(LOCAL_ALLOCA): New macro.
(local_cons, make_local_vector, make_local_string): Use them.
(local_cons): Rename parameter to make capture less likely.
2014-09-17 18:03:40 -07:00
Samuel Bronson
5db525e400 * unexmacosx.c (copy_data_segment): Port to GCC 4.6+.
Fixes: debbugs:9927
2014-09-17 12:58:31 -07:00
Paul Eggert
9356a87288 Fix minor problems found by static checking.
* alloc.c, lisp.h (SAVE_TYPE_INT_OBJ, make_save_int_obj):
Remove; now unused.
* buffer.h (decode_buffer): Doc and indentation fixes.
* fns.c (Qstring_collate_lessp, Qstring_collate_equalp): Now static.
2014-09-17 11:27:36 -07:00
Dmitry Antipov
18f88a41a7 Avoid clang-specific warnings.
* buffer.c (init_buffer): Shut up -Wself-assign.
* process.c (server_accept_connection): Shut up -Wunsequenced.
2014-09-17 19:34:37 +04:00
Eli Zaretskii
534f1f7cb6 Fix display of hollow-box and hbar cursors on r2L lines.
src/xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor):
 src/w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor): In R2L
 lines, draw the hollow-box and hbar cursors on the right side of
 cursor-glyph.  Thanks to Martin Rudalics <rudalics@gmx.at> for
 testing on X.
2014-09-16 18:53:36 +03:00
Eli Zaretskii
c20b4c2de5 Fix block cursor display in R2L lines.
src/xterm.c (x_draw_stretch_glyph_string):
 src/w32term.c (x_draw_stretch_glyph_string): Fix a thinko that
 caused the block cursor to disappear on a TAB in R2L lines in
 every window except the leftmost one.  Reported by Martin Rudalics
 <rudalics@gmx.at>.
2014-09-16 18:44:51 +03:00
Daniel Colascione
89b34071dd For symbols, use address as hash code.
* src/fns.c (sxhash): For symbols, use address as hash code.
2014-09-16 06:07:57 -07:00
Dmitry Antipov
3e67a981c4 Avoid more integer overflows on string size calculations.
* category.c (Fmake_category_set):
* xdisp.c (get_overlay_arrow_glyph_row):
* w32font.c (intern_font_name): Prefer ptrdiff_t to int.
2014-09-16 15:43:49 +04:00
Dmitry Antipov
b98b1a831b If USE_LOCAL_ALLOCATORS, allocate even more Lisp objects on stack.
* charset.c (load_charset_map_from_file): Use scoped_list2
and build_local_string.
* buffer.c (Fother_buffer, other_buffer_safely, init_buffer):
* emacs.c (init_cmdargs, decode_env_path):
* fileio.c (Fexpand_file_name):
* fns.c (maybe_resize_hash_table) [ENABLE_CHECKING]:
* frame.c (x_get_arg):
* keyboard.c (safe_run_hooks_error):
* lread.c (load_warn_old_style_backquotes):
* xdisp.c (Fcurrent_bidi_paragraph_direction):
* xfns.c (x_default_scroll_bar_color_parameter, select_visual):
* xselect.c (x_clipboard_manager_error_1)
(x_clipboard_manager_save_all):
* xterm.c (x_term_init): Use build_local_string.
2014-09-16 12:20:08 +04:00
Dmitry Antipov
005aff7092 Prefer ptrdiff_t to int and avoid integer overflows.
* fileio.c (make_temp_name):
* font.c (font_parse_family_registry): Avoid integer
overflow on string size calculation.
* data.c (Faset): Likewise for byte index.
2014-09-16 08:07:51 +04:00
Dmitry Antipov
ccb767d639 Always use matched specpdl entry to record call arguments (Bug#18473).
* lisp.h (record_in_backtrace): Adjust prototype.
* eval.c (record_in_backtrace): Return current specpdl level.
(set_backtrace_args, set_backtrace_nargs): Merge.  Adjust all users.
(eval_sub, Ffuncall): Record call arguments in matched specpdl
entry and use that entry in call to backtrace_debug_on_exit.
(apply_lambda): Likewise.  Get current specpdl level as 3rd arg.
(do_debug_on_call): Get current specpdl level as 2nd arg.
2014-09-16 08:04:56 +04:00
Eli Zaretskii
a7fc3ab8f1 Support playing on MS-Windows non-ASCII sound files using Unicode APIs.
src/sound.c [WINDOWSNT]: Include w32common.h and mbstring.h.
 (SOUND_WARNING) [WINDOWSNT]: Include in do..while and improve the
 error message format.  Use message_with_string to have non-ASCII
 file names properly displayed.
 (do_play_sound) [WINDOWSNT]: Use Unicode APIs to play sound files
 when w32-unicode-filenames is non-nil, but not on Windows 9X,
 where these APIs are not available even in UNICOWS.DLL.  Improve
 the format of error messages and include the file name in them
 where appropriate.
 (Fplay_sound_internal) [WINDOWSNT]: Make the MS-Windows branch
 call play-sound-functions, per documentation.
 src/w32.c (w32_get_long_filename, w32_get_short_filename): Constify
 the input file name arguments.
 src/w32.h (w32_get_long_filename, w32_get_short_filename): Update
 prototypes.
2014-09-15 18:51:57 +03:00
Eli Zaretskii
6b682d2b39 Fix display of R2L lines in partial-width windows.
src/xdisp.c (init_iterator): Don't use it->bidi_p before it is
 assigned the correct value.
 (extend_face_to_end_of_line): Account for truncation and
 continuation glyphs in R2L rows when one of the fringes is not
 displayed.
 (display_line): Don't assign negative X offset to a row if we are
 going to produce a truncation glyph for it.  When handling
 truncated R2L rows, consider the width of the left fringe instead
 of the right one.
 (produce_special_glyphs): Fix bogus assignments.
2014-09-15 18:25:54 +03:00
Dmitry Antipov
edb0288b83 If USE_LOCAL_ALLOCATORS, allocate some Lisp objects on stack.
* lisp.h (local_cons, local_list1, local_list2, local_list3)
[USE_LOCAL_ALLOCATORS]: New macros.
[!USE_LOCAL_ALLOCATORS]: Fall back to regular functions.
(build_local_string): Avoid argument name expansion clash with
make_local_string.
* alloc.c (toplevel)
[USE_LOCAL_ALLOCATORS && GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS]:
Preprocessor guard to avoid impossible configuration.
* charset.c (Ffind_charset_region, Ffind_charset_string):
Use make_local_vector.
* lread.c (read1, substitute_object_recurse): Use scoped_cons.
* textprop.c (Fput_text_property, Fadd_face_text_property):
Use scoped_list2.
(copy_text_properties): Use local_cons and local_list3.
* chartab.c (uniprop_table):
* data.c (wrong_choice, wrong_range):
* doc.c (get_doc_string):
* editfns.c (format2):
* fileio.c (Fexpand_file_name, auto_save_error):
* fns.c (Fyes_or_no_p):
* font.c (font_parse_xlfd, font_parse_family_registry, font_add_log):
* fontset.c (Fset_fontset_font):
* keyboard.c (echo_add_key, echo_dash, parse_menu_item)
(read_char_minibuf_menu_prompt):
* keymap.c (silly_event_symbol_error, describe_vector):
* menu.c (single_menu_item):
* minibuf.c (Fread_buffer):
* process.c (status_message, Fformat_network_address)
(server_accept_connection): Use make_local_string and
build_local_string.  Prefer compound literals where appropriate.
2014-09-15 18:53:23 +04:00
Daniel Colascione
497daa1274 Tweak sort docstring
* fns.c (Fsort): Tweak sort docstring.
2014-09-14 22:09:44 -07:00
Glenn Morris
11af46027d Merge from emacs-24; up to 2014-07-09T02:04:12Z!rgm@gnu.org 2014-09-14 17:20:21 -07:00
Eli Zaretskii
9ed670023f Fix bug #18420 with deadlocks communicating with subprocess on MS-Windows.
src/w32.c (fcntl): Support O_NONBLOCK fcntl on the write side of
 pipes.
 (sys_write): When a write to a non-blocking pipe returns ENOSPC,
 set errno to EAGAIN instead, to allow the caller to retry the
 write after some waiting.  Fixes deadlocks when Emacs exchanges a
 lot of data through the pipe.
2014-09-14 18:18:39 +03:00
Jan Djärv
3f7ae02b89 * callproc.c (init_callproc): Fix bug introduced at 2014-09-07.
Fixes: debbugs:18474
2014-09-14 10:23:48 +02:00
Eli Zaretskii
a6cc335aef Fix expansion and encoding of sound file names on MS-Windows.
src/sound.c (Fplay_sound_internal): Encode the sound file name in
 the ANSI codepage.  Expand it against data-directory, as per docs,
 not against the current directory.  No need to make a local copy
 of the file name; pass the encoded file name directly to
 do_play_sound.  (Bug#18463)
 src/w32.c (ansi_encode_filename): If w32_get_short_filename returns
 NULL, and the file name is not encodable in ANSI codepage, return
 the string with "?" replacement characters, which will fail the
 caller.  This avoids returning a random value in that case.
2014-09-13 11:26:44 +03:00
Dmitry Antipov
5599832145 Prefer ptrdiff_t to int and avoid integer overflows.
* fileio.c (make_temp_name):
* font.c (font_parse_family_registry): Avoid integer
overflow on string size calculation.
* data.c (Faset): Likewise for byte index.
2014-09-13 08:41:54 +04:00
Detlev Zundel
9f4ee99776 * buffer.c (syms_of_buffer): DEFSYM Qchoice (Bug#18337). 2014-09-12 15:12:40 +04:00
Dmitry Antipov
1dd1218653 Remove redundant GCPROs around Ffuncall and Fapply calls. This
is safe because Ffuncall protects all of its arguments by itself.
* charset.c (map_charset_for_dump): Remove redundant GCPRO.
* eval.c (Fapply, apply1, call0, call1, call2, call3, call4, call5)
(call6, call7): Likewise.  Use compound literals where applicable.
(run_hook_with_args_2): Use compound literal.
2014-09-11 17:21:19 +04:00
Dmitry Antipov
20d3625380 * lread.c (readevalloop_eager_expand_eval): Add GCPRO and fix
bootstrap broken if GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE.
2014-09-11 17:02:09 +04:00
Dmitry Antipov
5d27b6b668 More debugging aids around GCPROs.
* lisp.h (struct gcpro) [DEBUG_GCPRO]: Add extra members.
(GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6, GCPRO7):
Minor restyle.  If DEBUG_GCPRO, initialize extra fields.
2014-09-11 13:14:45 +04:00
Martin Rudalics
6e49a66ad2 In Fresize_mini_window_internal set w->total_lines from w->pixel_height (Bug#18422).
* window.c (Fresize_mini_window_internal): Set w->total_lines
from w->pixel_height (Bug#18422).
2014-09-11 10:47:34 +02:00
Dmitry Antipov
6e5fd4936d * lisp.h (make_local_string): Nitpick indent.
* print.c (Fprin1_to_string): Remove unused GCPROs.
2014-09-11 10:21:55 +04:00
Paul Eggert
b3ed13e84d Pacify --enable-gcc-warnings when no window system is used.
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.
2014-09-10 17:48:57 -07:00
Paul Eggert
fe252976a1 * charset.c (Fget_unused_iso_final_char): Fix subscript error.
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.
2014-09-10 17:29:54 -07:00
Paul Eggert
d1bed1f791 Simplify lisp.h by removing the __COUNTER__ business.
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.
2014-09-10 13:56:05 -07:00
Alp Aker
1014b530f5 * nsterm.m (ns_draw_fringe_bitmap): Use the same logic as other terms to determine bitmap color. (Bug#18437) 2014-09-10 13:56:38 -04:00
Eli Zaretskii
30773514c9 src/w32.c (sys_write): Use SAFE_NALLOCA for the NL -> CRLF translation buffer. 2014-09-10 20:51:53 +03:00
Paul Eggert
36f6120d8b * xterm.c (handle_one_xevent): Add braces to pacify gcc -Wall. 2014-09-10 10:18:38 -07:00
Jan Djärv
8c2dd4db87 Detect iconified under Compiz/Unity
* xterm.c (handle_one_xevent): Detect iconified by looking at
_NET_WM_STATE_HIDDEN.
2014-09-10 19:02:42 +02:00
Paul Eggert
c9c0610d07 * lisp.h (DEFINE_GDB_SYMBOL_ENUM): Remove.
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.
2014-09-10 09:52:50 -07:00
Paul Eggert
11e28ab08d Improve the experimental local and scoped allocation.
* 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.
2014-09-09 23:38:38 -07:00
Jan Djärv
b0fb34364b * nsterm.m (updateFrameSize:, initFrameFromEmacs:)
(toggleFullScreen:): Take frame_resize_pixelwise into account when
setting resize increments.

Fixes: debbugs:18435
2014-09-09 19:46:28 +02:00
Eli Zaretskii
1acb1beff1 Fix the row number mistakenly reported by pos_visible_p in rare cases.
src/xdisp.c (pos_visible_p): Properly save and restore the iterator
 state around the call to line_bottom, since it can move the
 iterator to another screen line.  This fixes off-by-one errors in
 the reported row in some rare cases.
2014-09-09 18:04:35 +03:00
Dmitry Antipov
e2588fa52f Cleanup last change and make all new stuff conditional.
* lisp.h (build_local_string): Rename to ...
(make_local_string): ... this macro.
(build_local_string, scoped_list1, scoped_list3): New macros.
(toplevel) [USE_STACK_LISP_OBJECTS]: Define all new macros
and functions as such, use regular fallbacks otherwise.
* alloc.c (verify_alloca) [USE_STACK_LISP_OBJECTS]: Define
conditionally.
2014-09-09 15:43:22 +04:00