1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-05 23:21:22 -08:00
Commit graph

34276 commits

Author SHA1 Message Date
Paul Eggert
2db4137542 * filelock.c (lock_file): Don't access freed storage. 2013-03-02 13:05:52 -08:00
Paul Eggert
b5029e230d The lock for FILE is now .#FILE or .#-FILE.
The old approach, which fell back on DIR/.#FILE.0 through
DIR/.#FILE.9, had race conditions that could not be easily fixed.
If DIR/.#FILE is a non-symlink file, Emacs now does not create a
lock file for DIR/FILE; that is, DIR/FILE is no longer partly
protected by a lock if DIR/.#FILE is a non-symlink file ("partly"
because the locking mechanism was never reliable in that case).
This patch fixes this and other bugs discovered by a code
inspection that was prompted by
<http://lists.gnu.org/archive/html/emacs-devel/2013-02/msg00531.html>.
Also, this patch switches to .#-FILE (not .#FILE) on MS-Windows,
to avoid interoperability problems between the MS-Windows and
non-MS-Windows implementations.  MS-Windows and non-MS-Windows
instances of Emacs now ignore each others' locks.
* etc/NEWS: Document this.
* src/filelock.c (defined_WINDOWSNT): New constant.
(MAKE_LOCK_NAME, fill_in_lock_file_name):
Don't create DIR/.#FILE.0 through DIR/.#FILE.9.  Instead, create
DIR/.#FILE symlinks on non-MS-Windows hosts, and DIR/.#-FILE
regular files on MS-Windows hosts.
(MAKE_LOCK_NAME, unlock_file, Ffile_locked_p):
Use SAFE_ALLOCA to avoid problems with long file names.
(MAX_LFINFO): Now a local constant, not a global macro.
(IS_LOCK_FILE): Remove.
(lock_file_1): Don't inspect errno if symlink call succeeds;
that's not portable.
(lock_file): Document that this function can return if lock
creation fails.

Fixes: debbugs:13807
2013-03-02 12:41:53 -08:00
Glenn Morris
06b583dec7 Merge from emacs-24; up to 2012-12-23T17:06:58Z!eliz@gnu.org 2013-03-02 12:10:05 -08:00
Paul Eggert
81c23309e4 * textprop.c: Use bool for booleans.
(validate_interval_range, Fadd_text_properties)
(Fremove_text_properties): Prefer bool to int when either works.
2013-03-02 10:39:34 -08:00
Eli Zaretskii
18f2ac090d Protect against changes of interval tree when adding/removing text props.
src/textprop.c (Fadd_text_properties, Fremove_text_properties): If
 the interval tree changes as a side effect of calling
 modify_region, re-do processing starting from the call to
 validate_interval_range.  (Bug#13743)
2013-03-02 11:28:53 +02:00
Eli Zaretskii
c856b8d467 Revert last commit; fixed on emacs-24 branch instead. 2013-03-02 11:02:12 +02:00
Eli Zaretskii
474b43d90f Fix bug #13734 with errors in lisp.h macro expansion.
src/lisp.h (XPNTR) [!USE_LSB_TAG]: Fix parentheses nesting.
2013-03-02 10:19:45 +02:00
Andreas Schwab
b270d11649 Fixes: debbugs:13734
* lisp.h (XPNTR) [!USE_LSB_TAG]: Remove extra paren.
2013-03-02 08:48:18 +01:00
Glenn Morris
929aeac608 Merge from emacs-24; up to 2012-12-23T02:41:17Z!rgm@gnu.org 2013-02-27 22:30:48 -08:00
Eli Zaretskii
531e70eca4 Fix race conditions with MS-Windows lock files by using _sopen.
src/filelock.c (create_lock_file) [WINDOWSNT]: Use _sopen with
 _SH_DENYRW flag, instead of emacs_open, to deny any other process
 access to the lock file until it is written and closed.

Fixes: debbugs:13807
2013-02-27 20:37:31 +02:00
Eli Zaretskii
c49e225602 w32.c (sys_open): Don't reset the flags for FD in fd_info[].
Related to bug #13546.
2013-02-27 20:00:57 +02:00
Paul Eggert
6e65b9ccff Qcall_interactively and Qexecute_kbd_macro are now static. 2013-02-26 23:42:43 -08:00
Bastien Guerry
3b166f0908 * window.c (Frecenter): Tiny docstring enhancement. 2013-02-26 15:28:37 +01:00
Paul Eggert
ecc0fdd49e Minor textprop integer cleanup.
* intervals.h, textprop.c (add_text_properties_from_list):
Return void, not int, since nobody uses the return value.
* textprop.c (validate_plist, add_properties, remove_properties)
(Fadd_text_properties):
Don't assume list length fits in int.
(interval_has_all_properties, interval_has_some_properties)
(interval_has_some_properties_list, add_properties, remove_properties)
(Fadd_text_properties, Fremove_text_properties)
(Fremove_list_of_text_properties, text_property_stickiness):
Use bool for booleans.
(Fadd_text_properties, Fremove_text_properties):
(Fremove_list_of_text_properties):
Reindent do-while as per GNU style.
2013-02-25 19:09:08 -08:00
Eli Zaretskii
343a2aefb5 Implement CLASH_DETECTION for MS-Windows.
src/filelock.c [WINDOWSNT]: Include w32.h.
 (MAKE_LOCK_NAME): Don't use 'lock', it clashes with MS runtime
 function of that name.  Up-case the macro arguments.
 (IS_LOCK_FILE): New macro.
 (fill_in_lock_file_name): Use IS_LOCK_FILE instead of S_ISLNK.
 (create_lock_file): New function, with body extracted from
 lock_file_1.
 [WINDOWSNT]: Implement lock files by writing a regular file with
 the lock information as its contents.
 (read_lock_data): New function, on Posix platforms just calls
 emacs_readlinkat.
 [WINDOWSNT]: Read the lock info from the file.
 (current_lock_owner): Call read_lock_data instead of calling
 emacs_readlinkat directly.
 (lock_file) [WINDOWSNT]: Run the file name through
 dostounix_filename.
 src/w32proc.c (sys_kill): Support the case of SIG = 0, in which case
 just check if the process by that PID exists.
 src/w32.c (sys_open): Don't reset the _O_CREAT flag if _O_EXCL is
 also present, as doing so will fail to error out if the file
 already exists.
 src/makefile.w32-in ($(BLD)/filelock.$(O)): Depend on src/w32.h.

 nt/inc/ms-w32.h (BOOT_TIME_FILE): Define.
 nt/config.nt (CLASH_DETECTION): Define to 1.

 lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Reject files
 that match "\`\.#", to avoid compiling lock files, even if they
 are readable (as they are on MS-Windows).

 doc/emacs/files.texi (Interlocking): Don't refer to symlinks as the
 exclusive means of locking files.

 etc/NEWS: Mention support for lock files on MS-Windows.
2013-02-25 19:36:03 +02:00
Eli Zaretskii
0248b0d70b Fix bug #13743 with crashes due to recursive add-text-properties.
src/textprop.c (Fadd_text_properties, Fremove_text_properties)
 (Fremove_list_of_text_properties): Skip all of the intervals in
 the region between START and END that already have resp. don't
 have the requested properties, not just the first one.  Add
 assertions that the loop afterwards always modifies the
 properties.
2013-02-25 18:13:42 +02:00
Stefan Monnier
b5071fc755 * src/callint.c (Fcall_interactively): Use the right lexical environment
for `interactive' specs.
* src/eval.c (Feval): Accept a lexical environment.

Fixes: debbugs:13811
2013-02-25 11:05:49 -05:00
Paul Eggert
1ddc2bd6ff Simplify data_start configuration.
This is a followon simplification to the fix for Bug#13650.
* admin/CPP-DEFINES (DATA_START, ORDINARY_LINK): Remove.
* configure.ac (CRT_DIR, LIB_STANDARD, START_FILES, DATA_START)
(LD_FIRSTFLAG, ORDINARY_LINK, LIB_GCC): Remove.
(AC_CHECK_HEADERS_ONCE): Remove sys/resource.h, as it's
not always needed.
(HAVE_DATA_START): New macro.
* etc/PROBLEMS (LIBS_SYSTEM, LIBS_MACHINE, LIBS_STANDARD): Remove.
Remove legacy-systems section, as this stuff is no longer
applicable with current linking strategies.
* src/Makefile.in (LD_FIRSTFLAG, LIB_GCC, CRT_DIR, LIB_STANDARD)
(START_FILES): Remove.  All uses removed.
(otherobj): Remove $(VMLIMIT_OBJ), as it's now first.
(ALLOBJS): Move here from autodeps.mk, and with VMLIMITS_OBJ first.
(buildobj.h): Use it.
($(ALLOBJS)): Depend on globals.h.
(temacs$(EXEEXT)): Use $(ALLOBJS).
* src/autodeps.mk (ALLOBJS): Move to Makefile.in.
* src/deps.mk (vm-limit.o):
* src/makefile.w32-in ($(BLD)/vm-limit.$(O)):
Do not depend on mem-limits.h.
* src/emacs.c (__do_global_ctors, __do_global_ctors_aux)
(__do_global_dtors, __CTOR_LIST__, __DTOR_LIST__)
[__GNUC__ && !ORDINARY_LINK]: Remove.
* src/mem-limits.h, src/pre-crt0.c: Remove.
* src/unexaix.c, src/unexcoff.c: Don't include mem-limits.h.
* src/unexcoff.c (etext): New decl.
(make_hdr): Use it instead of start_of_data.
* src/vm-limit.c: Move most of mem-limits.h's contents here.
(data_start): New decl.  It's OK if this is approximate,
so simplify-away some unnecessary exactness.
(POINTER): Remove; all uses removed.
(data_space_start): Now char *, to avoid casts.
(exceeds_lisp_ptr): New function, replacing the old
EXCEEDS_LISP_PTR macro.  All uses changed.
(check_memory_limits): Simplify and remove casts.
(start_of_data) [!CANNOT_DUMP || !SYSTEM_MALLOC]: Remove.
(memory_warnings): Use data_start instead of start_of_data.

Fixes: debbugs:13783
2013-02-24 21:55:37 -08:00
Glenn Morris
1abfd3e85f Merge from emacs-24; up to 2012-12-22T19:09:52Z!rgm@gnu.org 2013-02-24 11:45:17 -08:00
Andreas Schwab
51aa2a8b79 Fixes: debbugs:13797
* xdisp.c (set_message): Only check for debug-on-message if STRING
is a string.
2013-02-24 09:09:24 +01:00
Paul Eggert
1938d88c74 Fix regression introduced by July 10 filelock.c patch.
* filelock.c (fill_in_lock_file_name): Fix crash caused by the
2012-07-10 patch to this file.  Reported by Eli Zaretskii in
<http://lists.gnu.org/archive/html/emacs-devel/2013-02/msg00533.html>
and diagnosed by Andreas Schwab in
<http://lists.gnu.org/archive/html/emacs-devel/2013-02/msg00534.html>.
2013-02-23 16:21:06 -08:00
Paul Eggert
fcee502812 Assume C89 or better.
* ralloc.c (SIZE, POINTER, NIL):
* vm-limit.c (POINTER):
Remove, replacing all uses with C89 equivalents.  These old
symbols were present only for porting to pre-C89 platforms.
2013-02-22 11:23:12 -08:00
Claudio Bley
d78cf5edf9 Don't call 'select' from emacs_gnutls_pull.
src/w32.c (emacs_gnutls_pull): Don't call 'select', and don't loop.
 This avoids warning messages reported as part of Bug#13546.
2013-02-22 18:00:14 +02:00
Ken Brown
6bcd97a44a * src/sheap.c (report_sheap_usage): Fix arguments of message1_no_log. 2013-02-20 21:35:33 -05:00
Stefan Monnier
e11dacb577 * src/sheap.c (report_sheap_usage): Prefer message1_nolog. 2013-02-20 16:02:37 -05:00
Stefan Monnier
b6c2bfff02 * lisp/simple.el (command-execute): Move from C. Add obsolete check.
(extended-command-history): Move from C.
* src/keyboard.c (Qcommand_execute): New var.
(command_loop_1, read_char): Use it.
(Fcommand_execute): Remove, replace by an Elisp implementation.
(syms_of_keyboard): Adjust accordingly.
2013-02-20 11:37:06 -05:00
Daniel Colascione
6181850468 * sheap.c (report_sheap_usage): Use message, not message1, so
that we don't try to create a buffer while we're in the middle
  of dumping Emacs.  Explain why.
2013-02-19 21:56:28 -08:00
Daniel Colascione
d69f1120d8 2013-02-19 Daniel Colascione <dancol@dancol.org>
* sheap.c (report_sheap_usage): Use message, not message1, so
       that we don't try to create a buffer while we're in the middle
       of dumping Emacs.  Explain why.
2013-02-19 21:43:53 -08:00
Dmitry Antipov
2a14a4f13c * search.c (find_newline): Return byte position in bytepos.
Adjust comment.
(find_next_newline_no_quit, find_before_next_newline): Add
bytepos argument.
* lisp.h (find_newline, find_next_newline_no_quit)
(find_before_next_newline): Adjust prototypes.
* bidi.c (bidi_find_paragraph_start):
* editfns.c (Fconstrain_to_field, Fline_end_position):
* indent.c (compute_motion, vmotion):
* xdisp.c (back_to_previous_line_start, forward_to_next_line_start):
(get_visually_first_element, move_it_vertically_backward):
Adjust users and avoid calls to CHAR_TO_BYTE where appropriate.
2013-02-20 09:18:20 +04:00
Paul Eggert
8b17a8b958 Spelling fixes. 2013-02-19 06:44:03 -08:00
Glenn Morris
872faefb07 Merge from emacs-24; up to 2012-12-20T16:09:05Z!dmantipov@yandex.ru 2013-02-18 19:29:28 -08:00
Eli Zaretskii
17ddfd150f Avoid leaking handles on MS-Windows.
src/w32proc.c (new_child): Avoid leaking handles if the subprocess
 resources were not orderly released.
2013-02-18 18:38:50 +02:00
Eli Zaretskii
c1b9b2c27f Fix a typo in a comment. 2013-02-18 18:34:09 +02:00
Glenn Morris
a51e9ff76c Merge from emacs-24; up to 2012-12-20T05:05:41Z!dmantipov@yandex.ru 2013-02-17 11:01:46 -08:00
Eli Zaretskii
ae11bda519 Fix bug #13735 with network streams on MS-Windows.
Revert changes to w32proc.c done since 2012-11-30T09:23:15Z!eliz@gnu.org.

Do NOT merge to trunk!

 src/w32proc.c (new_child): Remove the loop that attempted to salvage
 slots of dead processes.
 (new_child, delete_child, find_child_pid): Don't insist on
 procinfo.hProcess be NULL for a process slot to be considered
 inactive, or be non-NULL to be considered active.
 (reader_thread): Don't set the FILE_AT_EOF flag of a file
 descriptor if the corresponding child was deleted and its
 char_avail handle is NULL.
 (reap_subprocess): Don't reset the FILE_AT_EOF flag.
 (sys_select): Don't pass a NULL process handle to
 WaitForMultipleObjects.

Fixes: debbugs:13735 debbugs:13546
2013-02-17 20:17:34 +02:00
Stefan Monnier
2f73da9c57 Prefer message1' over message'.
* src/xml.c (init_libxml2_functions):
* src/sound.c (sound_warning):
* src/sheap.c (report_sheap_usage):
* src/process.c (wait_reading_process_output):
* src/msdos.c (XMenuActivate):
* src/macros.c (Fstart_kbd_macro, Fend_kbd_macro):
* src/keyboard.c (top_level_1):
* src/editfns.c (Fmessage, Fmessage_box):
* src/callint.c (Fcall_interactively):
* src/fns.c (Fyes_or_no_p): Prefer `message1' over `message'.
2013-02-17 11:49:27 -05:00
Eli Zaretskii
fd80c659d2 Fix bug #13723 with redrawing vertical border in GUI sessions.
src/xdisp.c (x_draw_vertical_border): For a window that is neither
 the leftmost nor the rightmost, redraw both the left and the right
 vertical borders.
2013-02-17 18:22:11 +02:00
Jan Djärv
fd9547e88b Move scroll-bar-adjust-thumb-portion.
* xterm.c (syms_of_xterm): Move scroll-bar-adjust-thumb-portion ...

* frame.c (syms_of_frame): ... to here.
2013-02-17 11:41:33 +01:00
Eli Zaretskii
c793958519 Remove functions and macros unused on MS-Windows.
src/w32.c (sys_chown): Remove unused function.

 nt/inc/ms-w32.h (chown, logb): Remove, unused.
2013-02-16 16:16:07 +02:00
Eli Zaretskii
cd91fb4b0a Don't use __STDC__ on MS-Windows unless necessary (Bug #9066).
nt/inc/ms-w32.h (__STDC__): Fiddle with value only for MSVC.

 src/w32term.c <input_signal_count>: Declare 'volatile' unconditionally.
2013-02-16 15:59:37 +02:00
Eli Zaretskii
f277993be3 Don't set h_errno on MS-Windows except in gethostbyname.
See http://lists.gnu.org/archive/html/emacs-devel/2013-02/msg00293.html
and the following discussion for the details.

 src/w32.c (set_errno): Reset h_errno and don't set it to any other
 value.  Set errno instead.
 (check_errno): Reset h_errno.
 (sys_socket, socket_to_fd, sys_bind, sys_connect)
 (sys_gethostname, sys_getservbyname, sys_getpeername)
 (sys_shutdown, sys_setsockopt, sys_listen, sys_getsockname)
 (sys_accept, sys_recvfrom, sys_sendto, fcntl, sys_read): Don't set
 h_errno.
 (sys_gethostbyname): Set h_errno only errors detected.
2013-02-16 13:08:49 +02:00
Eli Zaretskii
b2af991a2f Remove unneeded bits of commit 2013-02-15T09:41:31Z!eliz@gnu.org merged from release branch. 2013-02-15 21:37:29 +02:00
Paul Eggert
e454145b09 * process.c (h_errno) [!HAVE_H_ERRNO]: Remove unused decl. 2013-02-15 11:08:11 -08:00
Eli Zaretskii
ef9c57e27a Fix bug #13720 with auto-save-timeout less than 4 seconds.
src/keyboard.c (read_char): Fix calculation of auto-save time out
 when auto-save-timeout is less than 4.
2013-02-15 20:52:16 +02:00
Glenn Morris
d64d97e537 Merge from emacs-24; up to 2012-12-19T19:51:40Z!monnier@iro.umontreal.ca 2013-02-15 09:31:12 -08:00
Eli Zaretskii
a7727d05be Fix commit 2013-02-15T09:41:31Z!eliz@gnu.org for bug #13546. 2013-02-15 15:14:26 +02:00
Dmitry Antipov
0063fdb148 * composite.c (fill_gstring_header): Remove useless prototype.
Break long line.
* lisp.h (message_dolog, compile_pattern): Adjust prototype.
* print.c (PRINTDECLARE, print_object):
* search.c (compile_pattern, fast_looking_at, search_buffer):
(simple_search, boyer_moore, Freplace_match):
* xdisp.c (c_string_pos, number_of_chars, message_dolog):
(get_overlay_arrow_glyph_row, display_mode_element):
(decode_mode_spec_coding, message3):
* xfaces.c (face_at_string_position): Use bool for booleans.
Adjust comments.
2013-02-15 16:26:42 +04:00
Eli Zaretskii
ef862e206a Allow deleted processes to be reaped by SIGCHLD handler on MS-Windows.
src/w32proc.c (new_child): Free up to 2 slots of dead processes at a
 time.  Improve diagnostics in DebPrint.
 (reader_thread): If cp->char_avail is NULL, set the FILE_AT_EOF
 flag, so that sys_select could have a chance of noticing that this
 process is dead, and call a SIGCHLD handler for it.  Improve
 diagnostics in DebPrint.
 (reap_subprocess): Reset the FILE_AT_EOF flag set by
 reader_thread.
 (sys_select): Watch a process whose procinfo.hProcess is non-NULL
 even if its char_avail is NULL.  Allows to reap subprocesses that
 were forcibly deleted by delete-process.  (Bug#13546)
2013-02-15 11:41:31 +02:00
Eli Zaretskii
bcf7fe2aef Improve error reporting as part of solving bug #13546 on MS-Windows.
src/w32.c (sys_socket, sys_bind, sys_connect, sys_gethostname)
 (sys_gethostbyname, sys_getservbyname, sys_getpeername)
 (sys_shutdown, sys_setsockopt, sys_listen, sys_getsockname)
 (sys_accept, sys_recvfrom, sys_sendto, fcntl): In case of failure,
 make sure errno is set to an appropriate value.  (Bug#13546)
 (socket_to_fd): Add assertion against indexing fd_info[] with a
 value that is out of bounds.
 (sys_accept): If fd is negative, do not set up the child_process
 structure for reading.
2013-02-15 11:01:13 +02:00
Paul Eggert
648e5523fb Merge from emacs-24; up to 2012-12-19T13:01:16Z!michael.albinus@gmx.de 2013-02-14 22:35:54 -08:00