Commit graph

34266 commits

Author SHA1 Message Date
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
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
Paul Eggert
974c7646ec Backport GCPRO fix from trunk.
The bug was reported for AIX before today's changes.
I reproduced the problem on Fedora 17 x86-64 when setting
GC_MARK_STACK by hand, and I presume it occurs with default
configurations on HP-UX and Unixware.
Trunk fix on 2013-01-14 by Dmitry Antipov <dmantipov@yandex.ru>:
Fix compilation with GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE.
* eval.c (eval_sub): Protect `form' from being GCed before its
car and cdr becomes protected with the backtrace entry.

Fixes: debbugs:13650
2013-02-14 14:08:38 -08:00
Paul Eggert
35b3a27e67 Fix AIX port.
* configure.ac (DATA_START, DATA_SEG_BITS): Set to 0x20000000 on AIX.
(GC_MARK_STACK): Do not set to GC_USE_GCPROS_AS_BEFORE, as that
runs afoul of some other bug in Emacs, and the default value
GC_MAKE_GCPROS_NOOPS has been tested and works.
* src/lisp.h (XPNTR) [!USE_LSB_TAG && DATA_SEG_BITS]:
Fix bug introduced in 2012-07-27 change.  DATA_SEG_BITS, if set,
was #undeffed earlier, so it cannot be used as a macro here.
Use the constant and not the macro.  Tested on AIX.
* src/unexaix.c: Revert 2013-02-11 and 2013-02-12 changes to this
file.  They're almost surely OK but we're just before a release so
we should avoid changes unless they're clearly needed.  Instead,
make the following minor change:
(ADDR_CORRECT): New macro.

Fixes: debbugs:13650
2013-02-14 12:05:10 -08:00
Jan Djärv
51b3a99c94 * gtkutil.c (tb_size_cb): New function.
(xg_create_tool_bar): Connect size-allocate to tb_size_cb.

Fixes: debbugs:13512
2013-02-14 20:01:12 +01:00
Stefan Monnier
e31560a791 * src/keyboard.c (active_maps): Fcurrent_active_maps expects a position, not
an event.
2013-02-14 09:40:54 -05:00
Stefan Monnier
fe33626173 * src/keyboard.c (syms_of_keyboard): Further tweaks of docstring. 2013-02-13 14:43:06 -05:00
Eli Zaretskii
0e4e7b741b More robust creation of a subprocess, attempt to solve bug #13546.
src/w32proc.c (new_child): If no vacant slots are found in
 child_procs[], make another pass looking for slots whose process
 has exited or died.
2013-02-13 19:04:30 +02:00
Eli Zaretskii
6e432f0cda Cleanup related to bug #13546 with subprocesses on MS-Windows.
src/w32.c (sys_pipe): When failing due to file descriptors above
 MAXDESC, set errno to EMFILE.
 (_sys_read_ahead): Update cp->status when failing to read serial
 communications input, so that the status doesn't stay at
 STATUS_READ_IN_PROGRESS.
2013-02-13 19:00:26 +02:00
Dmitry Antipov
5a655b9f0d * font.c (font_range): Add pos_byte argument. Adjust comment
and break long line.
* font.h (font_range): Adjust prototype.
* composite.c (autocmp_chars): Pass byte position to font_range.
Break long line.  Remove useless prototype and format comment.
2013-02-13 11:14:38 +04:00
Glenn Morris
01fcc3a532 Merge from emacs-24; up to 2012-12-17T11:17:34Z!rgm@gnu.org 2013-02-12 20:31:09 -08:00
Glenn Morris
1a359750bb * src/keyboard.c (input-decode-map, key-translation-map): Doc fixes. 2013-02-12 20:26:43 -08:00