Commit graph

38196 commits

Author SHA1 Message Date
Jussi Lahdenniemi
86e4513969 Fix incompatbilities with MS-Windows 2000 and older
* src/w32.c <multiByteToWideCharFlags>: New global variable.
(filename_to_utf16, filename_from_ansi, check_windows_init_file):
Use it instead of the literal MB_ERR_INVALID_CHARS.
(maybe_load_unicows_dll): Initialize multiByteToWideCharFlags as
appropriate for the underlying OS version.  For details, see
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00835.html.
* src/w32.h: Declare multiByteToWideCharFlags.
* src/w32fns.c (Fx_file_dialog, Fw32_shell_execute)
(add_tray_notification): Use multiByteToWideCharFlags instead of
the literal MB_ERR_INVALID_CHARS.
(_resetstkoflw_proc): New typedef.
(w32_reset_stack_overflow_guard): Call _resetstkoflw via a
pointer, as this function is absent in msvcrt.dll shipped with W2K
and older systems.

Copyright-paperwork-exempt: yes
2016-01-16 11:46:14 +02:00
Jussi Lahdenniemi
15c23aaf83 Ensure 8-byte aligned memory allocation on MS-Windows 9X
* src/w32heap.c (init_heap): Redirect malloc, realloc, and free to
special functions on Windows 9X.  Refuse to dump Emacs on Windows 9X.
(malloc_after_dump_9x, realloc_after_dump_9x)
(free_after_dump_9x): New functions.  (Bug#22379)  See also
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00852.html
for more details about the original problem.

* nt/inc/ms-w32.h (malloc_after_dump_9x, realloc_after_dump_9x)
(free_after_dump_9x): Add prototypes.

Copyright-paperwork-exempt: yes
2016-01-16 11:11:12 +02:00
Eli Zaretskii
740849fe98 Ensure positive number of glyphs for margins of positive width
* src/dispnew.c (margin_glyphs_to_reserve): Always return a
positive value when a non-zero width of the marginal area was
requested.  (Bug#22356)
2016-01-15 17:36:47 +02:00
Eli Zaretskii
aa636c8465 Fix crashes when mini-window has non-zero margins
* src/window.c (resize_frame_windows): Use 'new_size' to set
minibuffer window's 'total_cols' value, as 'size' might be in
pixels.  (Bug#22356)
2016-01-15 17:07:38 +02:00
Eli Zaretskii
3ffe81e245 Make 'random' seeds cryptographically secure if possible
* 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)
2016-01-15 11:47:55 +02:00
Glenn Morris
2fac775a40 * src/buffer.c (syms_of_buffer) <major-mode>: Doc fix.
Remove comments that do not apply since 2005-08-09.  (Bug#22349)
2016-01-12 19:01:12 -05:00
Eli Zaretskii
58a622d473 Make piping to subprocesses more robust on MS-Windows
* src/w32.c (sys_write): Don't write to a pipe more stuff than its
buffer can hold.  Don't return -1 if something has been written to
the pipe.  Zero out 'errno' before calling '_write', to avoid
returning a stale value.  (Bug#22344)
* src/w32proc.c (syms_of_ntproc) <w32-pipe-buffer-size>: New variable.
* src/w32.c (pipe2): Use it to request a user-defined size for the
pipe being created.

* etc/NEWS: Mention 'w32-pipe-buffer-size'.

* doc/emacs/msdos.texi (Windows Processes): Document
'w32-pipe-buffer-size'.
2016-01-12 18:41:58 +02:00
Eli Zaretskii
36b953947e Avoid an infloop when we run out of memory
* src/alloc.c (garbage_collect_1): Don't bother saving and
restoring the echo-area message if we are GC'ing after running out
of memory.  This avoids an infloop due to repeated attempts to
allocate memory for the cons cell needed to save the message,
which signals the memory-full error, which attempts to save the
echo-area message, which signals memory-full again, etc.
2016-01-11 18:05:40 +02:00
Eli Zaretskii
200675299e Avoid unnecessary failures of auto-saving after fatal error
* src/w32.c (map_w32_filename): Avoid non-trivial system calls for
the benefit of FAT volumes if we are called as part of shutting
down due to a fatal error, which probably means we are trying to
auto-save the session.
* src/lread.c (check_obarray): Don't bother making the obarray
valid if we are shutting down due to a fatal error.  This avoids
interfering with auto-saving the crashed session.
2016-01-11 18:00:13 +02:00
Paul Eggert
eef6784ea4 Simplify HAVE_MODULES use in mark_maybe_pointer
* src/alloc.c (HAVE_MODULES): Now a constant 0 if not defined,
so that later code can use 'if' rather than '#ifdef'.
(mark_maybe_pointer): Simplify based on HAVE_MODULES now
always working.
2016-01-10 21:46:37 -08:00
Paul Eggert
552694a265 Revert attempt to use 'noexcept' in typedef
This use of 'noexcept' runs afoul of the C++11 standard.
Problem reported by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00706.html
* src/emacs-module.c (emacs_finalizer_function):
Move this typedef here ...
* src/emacs-module.h: ... from here, and use only the C
version of the typedef.  The typedef is now private since it
is never used in the .h file now and anyway it seemed to be
causing more confusion than it cured.
(make_user_ptr, get_user_finalizer, set_user_finalizer):
Open-code the type instead.
2016-01-10 21:46:37 -08:00
Stefan Monnier
d2c7fda965 * src/alloc.c (mark_maybe_pointer): HAVE_MODULES may be undefined 2016-01-10 00:32:13 -05:00
Stefan Monnier
09b2b8a5ce * src/alloc.c (mark_maybe_pointer): Also check wide-int's emacs_value
(mark_memory): Simplify loop.  Don't assume a pointer-sized word can be
cast to Lisp_Object.
2016-01-09 21:15:12 -05:00
Eli Zaretskii
e990bb270e Use the face of preceding text for displaying the ellipsis
* src/xdisp.c (setup_for_ellipsis): Use the face of the preceding
text in it->saved_face_id for displaying the ellipsis, and ignore
the face, if any, of the invisible text.  (Bug#22320)
2016-01-08 12:12:53 +02:00
Eli Zaretskii
056da45d2c ; Improve commentary in 'setup_for_ellipsis'
* src/xdisp.c (setup_for_ellipsis): Improve commentary for when we
reset the ellipsis face to the default face.
2016-01-07 18:45:42 +02:00
Eli Zaretskii
c632466284 Obey coding-system-for-write when writing stdout/stderr in batch
* src/print.c (printchar_to_stream):
* src/xdisp.c (message_to_stderr): If coding-system-for-write has
a non-nil value, use it to encode output in preference to
locale-coding-system.  See the discussions in
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00048.html
for the details.

* doc/lispref/os.texi (Terminal Output): Document how to send
non-ASCII text via 'send-string-to-terminal'.
(Batch Mode): Document how text written to standard streams is
encoded.  Fix inaccuracy regarding which output streams are used
by output functions in batch mode.
2016-01-06 20:25:45 +02:00
Paul Eggert
d400753a0d * src/buffer.c: Stick with ASCII in doc string. 2016-01-05 09:18:47 -08:00
Paul Eggert
221240c925 Reword transient-mark-mode doc string
* src/buffer.c (syms_of_buffer): Reword doc string to avoid confusion.
The value 'lambda (literally) can be interpreted as (quote lambda),
which is not intended here; we want just the lambda symbol.
2016-01-05 09:02:31 -08:00
Eli Zaretskii
977d3eabe3 Update doc string of 'selective-display'
* src/buffer.c (syms_of_buffer) <selective-display>: Say that
using it with the value of 't' is obsolete.  (Bug#1092)
2016-01-05 17:49:50 +02:00
Eli Zaretskii
0d9e80d79d Fix a doc string of 'transient-mark-mode'
* src/buffer.c (syms_of_buffer) <transient-mark-mode>: Prevent
"lambda" in doc string from becoming a link to lambda expressions.
2016-01-04 18:58:20 +02:00
Paul Eggert
e79b06e6de Avoid stdio in SIGINT handler
* admin/merge-gnulib (GNULIB_MODULES): Add ignore-value.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* lib/ignore-value.h: New file, from gnulib.
* src/keyboard.c: Include it.
(write_stdout, read_stdin): New functions.
(handle_interrupt): Use them instead of printf and getchar,
and avoid fflush when handling signals.
2016-01-03 15:04:07 -08:00
Anders Lindgren
55a28d8a1b ; Fixed visual bell artifact problem on NextStep.
* src/nsterm.m (EmacsBell): Add feature to remove visual bell
  unconditionally.
  (hide_bell): New function.
  (ns_copy_bits): Hide visible bell before scrolling the frame content.
2016-01-02 15:54:01 +01:00
Paul Eggert
0e963201d0 Update copyright year to 2016
Run admin/update-copyright.
2016-01-01 01:34:24 -08:00
YAMAMOTO Mitsuharu
ce5ad125ef Clean up cairo printing code
* src/gtkutil.c (xg_get_page_setup): Use listn.
* src/xfns.c (Fx_export_frames, Fx_print_frames_dialog): Doc fix.  Use
decode_window_system_frame and FRAME_VISIBLE_P.
(Fx_print_frames_dialog): Use redisplay_preserve_echo_area instead
of Fdisplay.
* src/xterm.c (x_cr_export_frames): Use redisplay_preserve_echo_area
instead of Fdisplay.  Temporarily unblock_input around QUIT.
2015-12-31 14:18:09 +09:00
YAMAMOTO Mitsuharu
30f4a892ec Move variables to inner loop, preparing for Mac port merge
* src/keyboard.c (command_loop_1): Move variables `cmd',
`keybuf', and `i' to inner loop.
2015-12-31 11:28:16 +09:00
YAMAMOTO Mitsuharu
6ee327d8a1 Add handle_user_signal_hook
* src/keyboard.h (handle_user_signal_hook): New declaration.
* src/keyboard.c (handle_user_signal_hook): New variable.
(handle_user_signal): Call it.
2015-12-31 11:17:35 +09:00
YAMAMOTO Mitsuharu
47580e0d72 Avoid writing to purespace
* src/alloc.c (Fmake_string): Don't write to empty string contents.
(allocate_vector): Don't write to empty vector size.
* src/character.h (CHECK_CHARACTER_CAR, CHECK_CHARACTER_CDR):
Don't call unnecessary XSETCAR or XSETCDR.
* src/lisp.h (STRING_SET_UNIBYTE, STRING_SET_MULTIBYTE): Don't
write to empty string size_byte.
2015-12-31 10:59:40 +09:00
Eli Zaretskii
4c8f8db24e Fix rendering of HTML pages that use character composition
* src/indent.c (Fvertical_motion): Fix the case when point starts
in the middle of a composition, as in shr-vertical-motion.
(Bug#22250)
2015-12-30 19:00:19 +02:00
Eli Zaretskii
a8d37ca628 Avoid some compiler warnings in w32.c
* src/w32.c (codepage_for_filenames, crlf_to_lf)
(ansi_encode_filename, socket_to_fd, sys_write)
(check_windows_init_file): Avoid compiler warnings about
differences in pointer signedness.
2015-12-30 18:26:56 +02:00
Eli Zaretskii
57bd9a35ef Avoid assertion violations in compact_font_cache_entry
* src/alloc.c (compact_font_cache_entry): Don't use VECTORP to
avoid assertion violation in ASIZE.  (Bug#22263)
2015-12-29 20:07:23 +02:00
Martin Rudalics
9fc2d2c0c7 * src/xfns.c (x_create_tip_frame): Process alpha parameter. 2015-12-29 17:41:15 +01:00
Alan Mackenzie
326ffcce5f Allow line comments ending with escaped NL to be continued to the next line.
Use this in C, C++, and Objective C Modes.  Fixes bug#22246

* src/syntax.c (comment-end-can-be-escaped): New buffer local variable.
(forw-comment, back-comment): On encountering an end of comment character,
test whether it is escaped when `comment-end-can-be-escaped' is non-nil.

* doc/lispref/syntax.texi (Control Parsing): Describe
`comment-end-can-be-escaped'.

* etc/NEWS (Lisp Changes): Describe `comment-end-can-be-escaped'.

* lisp/progmodes/cc-langs.el: New c-lang-setvar `comment-end-can-be-escaped'.
2015-12-28 16:01:05 +00:00
Eli Zaretskii
3ad99c4674 Avoid leaving "ghost" of mouse pointer on MS-Windows
* src/w32term.c (frame_set_mouse_pixel_position):
* src/w32fns.c (Fw32_mouse_absolute_pixel_position): Momentarily
disable "mouse trails" when moving the mouse pointer.  (Bug#22247)
* src/w32term.c (frame_set_mouse_pixel_position): Include
w32common.h.
2015-12-27 20:52:21 +02:00
Wolfgang Jenkner
4b1436b702 Always define gmalloc etc. in src/gmalloc.c
This is a work-around to prevent the compiler from using semantic
knowledge about malloc for optimization purposes.  E.g., gcc 5.2
with -O2 replaces most of calloc's definition by a call to calloc;
see Bug#22085.
* src/gmalloc.c [!HYBRID_MALLOC] (malloc, realloc, calloc)
(aligned_alloc, free): Do not undef.  Instead, define these as
functions (perhaps renamed to gmalloc etc.) in terms of gmalloc etc.
2015-12-26 12:12:43 -08:00
Paul Eggert
b45828ee13 Propagate Bug#14412 fix to backtrace_eval_unrewind
* src/eval.c (unbind_to): Redo so that the FALLTHROUGH!! comment
becomes accurate again. This shouldn’t affect behavior.
(backtrace_eval_unrewind): Apply the recent unbind_to fix here, too.
2015-12-26 09:32:03 -08:00
Eli Zaretskii
23c3caf602 Avoid assertion violation in unbind_to
* src/eval.c (unbind_to) <SPECPDL_LET>: Avoid assertion violation
if we get here with an object that is not a symbol.  (Bug#14412)
2015-12-26 12:43:08 +02:00
Eli Zaretskii
94a3606243 Fix bootstrap broken by changes related to OS X file-name encoding
* lisp/international/ucs-normalize.el (eval-when-compile): Make
sure char-code-property-alist includes elements that allow access
to 'decomposition' and 'canonical-combining-class' Unicode
properties, as compiling ucs-normalize.el requires that.
* lisp/loadup.el (featurep 'ns): Load ucs-normalize and ns-win
only of charprop.el was already loaded.

* src/Makefile.in ($(lispsource)/international/ucs-normalize.elc):
New order-only dependency.
2015-12-25 13:23:17 +02:00
Anders Lindgren
3e7f6338d8 ; Re-enabled "File-name completion of non-ASCII characters on OS X (bug#22169)""
; This reverts commit d107eda498.

; A follow-up to this will be made to ucs-normalize.el etc. to ensure that building from scratch works.
2015-12-25 10:55:38 +01:00
Anders Lindgren
d107eda498 ; Revert "File-name completion of non-ASCII characters on OS X (bug#22169)"
; This reverts commit 0905307522.

; This caused a build from scratch to fail.
2015-12-24 09:50:26 +01:00
Paul Eggert
04dd5a502e Fix dired.c typo with ptrdiff_t vs Lisp_Object
* src/dired.c (file_name_completion): Don't assume Lisp_Object is
an integer type, fixing a problem introduced in the recent fix for
Bug#22169.
2015-12-23 11:49:22 -08:00
Eli Zaretskii
30cc4e4b12 Fix file-name completion on OS X
* src/dired.c (file_name_completion): Reject false matches due to
file-name-coding-systems that decompose characters when encoding
file names, by comparing decoded file names as well.  (Bug#22169)
(syms_of_dired) <Qdecomposed_characters>: New DEFSYM.

* lisp/international/ucs-normalize.el (utf-8-hfs): Give it a
non-nil 'decomposed-characters' property.
2015-12-23 19:34:00 +02:00
Anders Lindgren
0905307522 File-name completion of non-ASCII characters on OS X (bug#22169)
The coding system `utf-8-nfd', locally defined in ns-win.el,
didn't provide a :pre-write-conversion method, causing file name
completion of non-ASCII characters to fail.  Solved by using the
`utf-8-hfs' coding system provided by `ucs-normalize'.

* lisp/loadup.el: Load international/ucs-normalize (when building
for ns).

* lisp/term/ns-win.el (utf-8-nfd): Made `utf-8-nfd' as alias for
`utf-8-hfs' and removed the old implementation.  Set `utf-8-hfs'
as the file name coding system.

* src/nsfns.c (ns-convert-utf8-nfd-to-nfc): Removed.
2015-12-23 07:15:45 +01:00
Eli Zaretskii
5443f4cd58 ; Clarify comment added in previous commit. 2015-12-21 20:07:55 +02:00
Paul Eggert
57f222558d Add FIXME comment re stack overflow and modules 2015-12-21 02:54:51 -08:00
Paul Eggert
e9916d8880 Revert some recent emacs-module commentary
Most of the recently-added commentary was incorrect, due to the
possibility of stack overflow.
2015-12-20 17:44:51 -08:00
Paul Eggert
3864302c81 Port undo fixes to -fno-common
Port recent fix for Bug#21968 to platforms like 'gcc -fno-common'.
* src/keyboard.c, src/keyboard.h (point_before_last_command_or_undo)
(buffer_before_last_command_or_undo):
Declare in keyboard.h, and define in keyboard.c,
instead of assuming the traditional Unix relaxed ref-def linkage.
2015-12-20 17:27:54 -08:00
Philipp Stephani
4851616b4d Improve commentary for emacs-module.c
* src/lisp.h: Document emacs-module.c assumptions about EQ and NILP.
* src/emacs-module.c (module_non_local_exit_get): Document that we
cannot use the current implementation.
(module_is_not_nil, module_eq): Document assumptions about EQ and
NILP.
2015-12-20 21:10:03 +02:00
Eli Zaretskii
fb2eaf0ffc Fix vertical-motion in tabulated-list mode
* src/indent.c (Fvertical_motion): When moving from line beginning
to point under line truncation, assume overshoot by one line only
if point actually lies beyond the window's right margin.
(Bug#22194)
2015-12-18 12:26:17 +02:00
Paul Eggert
d8b4105705 Remove attempt to use C11 threads
C11 threads are not needed for Emacs now, and their use is causing
hassles on FreeBSD 10.x.  Problem reported by Ashish SHUKLA in:
http://lists.gnu.org/archive/html/emacs-devel/2015-12/msg00648.html
* configure.ac: Do not check for C11 threads. Remove unnecessary
fiddling with CPPFLAGS when configuring pthreads.
* src/emacs-module.c (main_thread, check_main_thread)
(module_init): Do not worry about C11 threads.
2015-12-15 23:10:48 -08:00
YAMAMOTO Mitsuharu
7024344084 Fix variable name typo in compute_tip_xy
* src/w32fns.c (compute_tip_xy):
* src/xfns.c (compute_tip_xy): Modify *root_x instead of *root_y
when `right' is integer.
2015-12-15 17:54:07 +09:00