Commit graph

31573 commits

Author SHA1 Message Date
Paul Eggert
903fe15d9d * alloc.c: Integer signedness and overflow fixes.
Do not impose an arbitrary 32-bit limit on malloc sizes when debugging.
(__malloc_size_t): Default to size_t, not to int.
(pure_size, pure_bytes_used_before_overflow, stack_copy_size)
(Fgarbage_collect, mark_object_loop_halt, mark_object):
Prefer ptrdiff_t to size_t when either would do, as we prefer
signed integers.
(XMALLOC_OVERRUN_CHECK_OVERHEAD): New macro.
(xmalloc_overrun_check_header, xmalloc_overrun_check_trailer):
Now const.  Initialize with values that are in range even if char
is signed.
(XMALLOC_PUT_SIZE, XMALLOC_GET_SIZE): Remove, replacing with ...
(xmalloc_put_size, xmalloc_get_size): New functions.  All uses changed.
These functions do the right thing with sizes > 2**32.
(check_depth): Now ptrdiff_t, not int.
(overrun_check_malloc, overrun_check_realloc, overrun_check_free):
Adjust to new way of storing sizes.  Check for size overflow bugs
in rest of code.
(STRING_BYTES_MAX): Adjust to new overheads.  The old code was
slightly wrong anyway, as it missed one instance of
XMALLOC_OVERRUN_CHECK_OVERHEAD.
(refill_memory_reserve): Omit needless cast to size_t.
(mark_object_loop_halt): Mark as externally visible.
2011-07-07 09:58:24 -07:00
Paul Eggert
ac82cc6ad7 * xselect.c: Integer signedness and overflow fixes.
(Fx_register_dnd_atom, x_handle_dnd_message):
Use ptrdiff_t, not size_t, since we prefer signed.
(Fx_register_dnd_atom): Check for ptrdiff_t (and size_t) overflow.
* xterm.h (struct x_display_info): Use ptrdiff_t, not size_t, for
x_dnd_atoms_size and x_dnd_atoms_length.
2011-07-06 19:24:56 -07:00
Paul Eggert
c2d1e36da8 * doprnt.c: Prefer signed to unsigned when either works.
* eval.c (verror):
* doprnt.c (doprnt):
* lisp.h (doprnt):
* xdisp.c (vmessage):
Use ptrdiff_t, not size_t, when using or implementing doprnt,
since the sizes cannot exceed ptrdiff_t bounds anyway, and we
prefer signed arithmetic to avoid comparison confusion.
* doprnt.c (doprnt): Avoid a "+ 1" that can't overflow,
but is a bit tricky.
2011-07-06 19:14:52 -07:00
Paul Eggert
0e926e561c Assume freestanding C89 headers, string.h, stdlib.h. 2011-07-06 18:32:56 -07:00
Paul Eggert
59361254a6 Merge from trunk. 2011-07-06 16:34:39 -07:00
Paul Eggert
8a5c77bba5 Remove more assumptions re struct layout (Bug#8884). 2011-07-06 15:22:32 -07:00
Paul Eggert
22b4128ef0 Remove unportable assumption about struct layout (Bug#8884).
* buffer.c (clone_per_buffer_values): Don't assume that
sizeof (struct buffer) is a multiple of sizeof (Lisp_Object).
This isn't true in general, and it's particularly not true
if Emacs is configured with --with-wide-int.
* buffer.h (FIRST_FIELD_PER_BUFFER, LAST_FIELD_PER_BUFFER):
New macros, used in the buffer.c change.
2011-07-06 14:53:56 -07:00
Juanma Barranquero
9173deecd8 Fix typos. 2011-07-05 11:51:56 +02:00
Jan Djärv
869795d6b5 Use GConf and GSettings both, check GConf/GSettings toolbar style and font name.
* configure.in (HAVE_GCONF): Allow both HAVE_GCONF and HAVE_GSETTINGS.

* lisp/dynamic-setting.el (dynamic-setting-handle-config-changed-event): 
Update doc string.

* src/xsettings.c: Use both GConf and GSettings if both are available.
(store_config_changed_event): Add comment.
(dpyinfo_valid, store_font_name_changed, map_tool_bar_style)
(store_tool_bar_style_changed): New functions.
(store_monospaced_changed): Add comment. Call dpyinfo_valid.
(struct xsettings): Move font inside HAVE_XFT.
(GSETTINGS_TOOL_BAR_STYLE, GSETTINGS_FONT_NAME): New defines.
(GSETTINGS_MONO_FONT): Renamed from SYSTEM_MONO_FONT.
Move inside HAVE_XFT.
(something_changed_gsettingsCB): Renamed from something_changedCB.
Check for changes in GSETTINGS_TOOL_BAR_STYLE and GSETTINGS_FONT_NAME
also.
(GCONF_TOOL_BAR_STYLE, GCONF_FONT_NAME): New defines.
(GCONF_MONO_FONT): Renamed from SYSTEM_MONO_FONT. Move inside HAVE_XFT.
(something_changed_gconfCB): Renamed from something_changedCB.
Check for changes in GCONF_TOOL_BAR_STYLE and GCONF_FONT_NAME also.
(parse_settings): Move check for font inside HAVE_XFT.
(read_settings, apply_xft_settings): Add comment.
(read_and_apply_settings): Add comment.  Call map_tool_bar_style and
store_tool_bar_style_changed.  Move check for font inside HAVE_XFT and
call store_font_name_changed.
(xft_settings_event): Add comment.
(init_gsettings): Add comment.  Get values for GSETTINGS_TOOL_BAR_STYLE
and GSETTINGS_FONT_NAME.  Move check for fonts within HAVE_XFT.
(init_gconf): Add comment.  Get values for GCONF_TOOL_BAR_STYLE
and GCONF_FONT_NAME.  Move check for fonts within HAVE_XFT.
(xsettings_initialize): Call init_gsettings last.
(xsettings_get_system_font, xsettings_get_system_normal_font): Add
comment.
2011-07-05 10:21:38 +02:00
Paul Eggert
9cfdb3ec08 [ChangeLog]
Assume support for memcmp, memcpy, memmove, memset.
This simplifies the code a bit.  All current platforms have these,
as they are required for C89.  If this turns into a problem we
can add the gnulib modules for these (a 1-line change to Makefile.in).
* configure.in: Don't check for memcmp, memcpy, memmove, memset.
[lib-src/ChangeLog]
Assume support for memcmp, memcpy, memmove, memset.
* etags.c (absolute_filename): Assume memmove exists.
[src/ChangeLog]
Assume support for memcmp, memcpy, memmove, memset.
* lisp.h, sysdep.c (memcmp, memcpy, memmove, memset):
* regex.c (memcmp, memcpy):
Remove; we assume C89 now.

* gmalloc.c (memcpy, memset, memmove): Remove; we assume C89 now.
(__malloc_safe_bcopy): Remove; no longer needed.
2011-07-04 22:27:49 -07:00
Paul Eggert
6089c5670b * lisp.h (struct vectorlike_header, struct Lisp_Subr): Signed sizes.
Use EMACS_INT, not EMACS_UINT, for sizes.  The code works equally
well either way, and we prefer signed to unsigned.
2011-07-04 20:09:36 -07:00
Paul Eggert
d8ed26bd07 Random fixes. E.g., (random) never returned negative values.
* fns.c (Frandom): Use GET_EMACS_TIME for random seed, and add the
subseconds part to the entropy, as that's a bit more random.
Prefer signed to unsigned, since the signedness doesn't matter and
in general we prefer signed.  When given a limit, use a
denominator equal to INTMASK + 1, not to VALMASK + 1, because the
latter isn't right if USE_2_TAGS_FOR_INTS.
* sysdep.c (get_random): Return a value in the range 0..INTMASK,
not 0..VALMASK.  Don't discard "excess" bits that random () returns.
2011-07-04 19:51:15 -07:00
Stefan Monnier
cabf1cac90 * textprop.c (text_property_stickiness): Obey Vtext_property_default_nonsticky.
(syms_of_textprop): Add `display' to Vtext_property_default_nonsticky.
* w32fns.c (syms_of_w32fns):
* xfns.c (syms_of_xfns): Don't Add `display' since it's there by default.
2011-07-04 14:31:29 -04:00
Paul Eggert
6e9b2be9e6 * fileio.c (barf_or_query_if_file_exists): Use S_ISDIR.
This is more efficient than Ffile_directory_p and avoids a minor race.
2011-07-04 10:50:12 -07:00
Lars Magne Ingebrigtsen
7c301272b4 * buffer.c (Foverlay_put): Say what the return value is
(bug#7835).
2011-07-04 17:32:22 +02:00
Lars Magne Ingebrigtsen
ad63790719 (barf_or_query_if_file_exists): Make the "File is a directory"
error be more correct.
2011-07-04 16:34:31 +02:00
Lars Magne Ingebrigtsen
c4f2d8d48d * fileio.c (barf_or_query_if_file_exists): Check first if the file
is a directory before asking whether to use the file name
(bug#7564).
2011-07-04 15:44:52 +02:00
Lars Magne Ingebrigtsen
90186c68a4 * fns.c (Frequire): Remove the mention of the .gz files, since
that's installation-specific, but keep the mention of
`get-load-suffixes'.
2011-07-04 14:22:39 +02:00
Paul Eggert
da64016efd * editfns.c (Fformat_time_string): Don't assume strlen fits in int.
Report string overflow if the output is too long.
2011-07-04 00:44:38 -07:00
Juanma Barranquero
a555cb8799 src/gnutls.c: Remove bogus references to :verify-error.
* gnutls.c (Fgnutls_boot): Don't mention :verify-error.
  (syms_of_gnutls): Remove duplicate DEFSYM for
  Qgnutls_bootprop_verify_hostname_error, an error for
  Qgnutls_bootprop_verify_error (which is no longer used).
2011-07-04 04:47:04 +02:00
Juanma Barranquero
7d47b58038 src/eval.c (find_handler_clause): Remove unused parameters.
* eval.c (find_handler_clause): Remove parameters `sig' and `data',
  unused since 2011-01-26T20:02:07Z!monnier@iro.umontreal.ca.  All callers changed.
  Also (re)move comments that are misplaced or no longer relevant.
2011-07-04 04:14:42 +02:00
Lars Magne Ingebrigtsen
1e49bfab49 * callint.c (Finteractive): Clarify the meaning of "@".
Fixes: debbugs:8813
2011-07-04 01:21:45 +02:00
Chong Yidong
1485f4c03a Fix how custom themes handle faces, so the multi-tty/multi-frame case works.
* lisp/custom.el (custom-push-theme): Don't record faces in `changed'
theme; this doesn't work correctly for per-frame face settings.
(disable-theme): Use face-set-after-frame-default to reset faces.
(custom--frame-color-default): New function.

* lisp/frame.el (frame-background-mode, frame-set-background-mode):
Moved from faces.el.
(frame-default-terminal-background): New function.

* src/xfaces.c (Finternal_merge_in_global_face): Modify the foreground
and background color parameters if they have been changed.
2011-07-03 18:16:07 -04:00
Lars Magne Ingebrigtsen
a9ab721e7f Clarify what the "-" and "0" flags mean in the `format' function
(bug#6659).
2011-07-03 15:02:43 +02:00
Paul Eggert
2e13213db2 * xsettings.c (SYSTEM_FONT): Define only when used.
No need to define when HAVE_GSETTINGS || !HAVE_XFT.
2011-07-02 23:17:19 -07:00
Paul Eggert
cf7cff5784 * keymap.c (access_keymap_1): Now static. 2011-07-02 23:15:12 -07:00
Chong Yidong
7a8e04f79e Fix corner case in prefix-arg handling for mouse events (Bug#1586).
* src/keyboard.c (command_loop_1): If a down-mouse event is unbound,
leave any prefix arg for the up event.
2011-07-02 19:40:04 -04:00
Lars Magne Ingebrigtsen
69bb1ef7df * lread.c (syms_of_lread): Mention single symbols defined by
`defvar' or `defconst' (bug#7154).
2011-07-02 18:18:24 +02:00
Lars Magne Ingebrigtsen
7b3747f94c (Frequire): Mention get-load-suffixes. 2011-07-02 16:34:45 +02:00
Lars Magne Ingebrigtsen
61352f622b * fns.c (Frequire): Mention .el.gz files.
Fixes: debbugs:7314
2011-07-02 16:30:52 +02:00
Martin Rudalics
28545e0497 Remove clone-number support. Provide clone-of parameter in window states.
* window.h (window): Remove clone_number slot.
* window.c (Fwindow_clone_number, Fset_window_clone_number):
Remove.
(make_parent_window, make_window, saved_window)
(Fset_window_configuration, save_window_save): Don't deal with
clone numbers.
* buffer.c (Qclone_number): Remove declaration.
(sort_overlays, overlay_strings): Don't deal with clone numbers.

* window.el (window-state-get-1): Don't assign clone numbers.
Add clone-of item to list of window parameters.
(window-state-put-2): Don't process clone numbers.
(display-buffer-alist): Fix doc-string.
2011-07-02 12:36:48 +02:00
Stefan Monnier
3349e122e2 Add multiple inheritance to keymaps.
* src/keymap.c (Fmake_composed_keymap): New function.
(Fset_keymap_parent): Simplify.
(fix_submap_inheritance): Remove.
(access_keymap_1): New function extracted from access_keymap to handle
embedded parents and handle lists of maps.
(access_keymap): Use it.
(Fkeymap_prompt, map_keymap_internal, map_keymap, store_in_keymap)
(Fcopy_keymap): Handle embedded parents.
(Fcommand_remapping, define_as_prefix): Simplify.
(Fkey_binding): Simplify.
(syms_of_keymap): Move minibuffer-local-completion-map,
minibuffer-local-filename-completion-map,
minibuffer-local-must-match-map, and
minibuffer-local-filename-must-match-map to Elisp.
(syms_of_keymap): Defsubr make-composed-keymap.
* src/keyboard.c (menu_bar_items): Use map_keymap_canonical.
(parse_menu_item): Trivial simplification.
* lisp/subr.el (remq): Don't allocate if it's not needed.
(keymap--menu-item-binding, keymap--menu-item-with-binding)
(keymap--merge-bindings): New functions.
(keymap-canonicalize): Use them to refine the canonicalization.
* lisp/minibuffer.el (minibuffer-local-completion-map)
(minibuffer-local-must-match-map): Move initialization from C.
(minibuffer-local-filename-completion-map): Move initialization from C;
don't inherit from anything here.
(minibuffer-local-filename-must-match-map): Make obsolete.
(completing-read-default): Use make-composed-keymap to combine
minibuffer-local-filename-completion-map with either
minibuffer-local-must-match-map or
minibuffer-local-filename-completion-map.
2011-07-02 00:27:41 -04:00
Glenn Morris
3279eb878e Fix typos that break xsettings.c compilation.
* configure.in (SETTINGS_CFLAGS, SETTINGS_LIBS) [HAVE_GCONF]: Fix typo.

* src/Makefile.in (SETTINGS_LIBS): Fix typo.
2011-07-01 13:53:59 -04:00
Kazuhiro Ito
4550efdf3f * coding.c (Fencode_coding_string): Record the last coding system
used, as the function doc string says.

Fixes: debbugs:8738
2011-07-01 13:03:55 +02:00
Jan Djärv
0949d2b6ba * process.c: Add defined (HAVE_GSETTINGS) for xgselect.h
(wait_reading_process_output): Add defined (HAVE_GSETTINGS) for
xg_select.

* xgselect.c: Add defined (HAVE_GSETTINGS).
(xgselect_initialize): Ditto.

* xsettings.c (store_monospaced_changed): Take new font as arg and
check for change against current_mono_font.
(EMACS_TYPE_SETTINGS): Remove this and related defines.
(emacs_settings_constructor, emacs_settings_get_property)
(emacs_settings_set_property, emacs_settings_class_init)
(emacs_settings_init, gsettings_obj): Remove.
(something_changedCB): New function for HAVE_GSETTINGS.
(something_changedCB): HAVE_GCONF: Call store_monospaced_changed
with value as argument.
(init_gsettings): Check that GSETTINGS_SCHEMA exists before calling
g_settings_new.  Do not create gsettings_obj.
Remove calls to g_settings_bind. Connect something_changedCB to
"changed".

Fixes: debbugs:8967
2011-07-01 11:18:46 +02:00
Paul Eggert
bbc6b30467 * eval.c (struct backtrace): Simplify and port the data structure.
Do not assume that "int nargs : BITS_PER_INT - 2;" produces a
signed bit field, as this assumption is not portable and it makes
Emacs crash when compiled with Sun C 5.8 on sparc.  Do not use
"char debug_on_exit : 1" as this is not portable either; instead,
use the portable "unsigned int debug_on_exit : 1".  Remove unused
member evalargs.  Remove obsolete comments about cc bombing out.
2011-06-30 22:12:00 -07:00
Jan Djärv
51bb811f62 Fix bad include.
* xsettings.c: Include glib-object.h, gio/gio.h if HAVE_GSETTINGS.
2011-06-30 17:07:40 +02:00
Jan Djärv
9851bfc58d Add GSettings support (GConf is going away).
* configure.in (gsettings): New option and check for GSettings.

* src/Makefile.in (SETTINGS_CFLAGS, SETTINGS_LIBS): Renamed from
GCONF_CFLAGS/LIBS.

* src/xsettings.c: Include glib.h if HAVE_GSETTINGS.
Let HAVE_GSETTINGS override HAVE_GCONF.
(store_monospaced_changed): New function.
(EMACS_SETTINGS): A new type derived from GObject to handle
GSettings notifications.
(emacs_settings_constructor, emacs_settings_get_property)
(emacs_settings_set_property, emacs_settings_class_init):
New functions.
(gsettings_client, gsettings_obj): New variables.
(GSETTINGS_SCHEMA): New define.
(something_changedCB): Call store_monospaced_changed.
(init_gsettings): New function.
(xsettings_initialize): Call init_gsettings.
(syms_of_xsettings): Initialize gsettings_client, gsettings_obj
to NULL.
2011-06-30 16:00:26 +02:00
Glenn Morris
07a22620b4 ChangeLog fix. 2011-06-29 19:56:57 -07:00
Martin Rudalics
5386012dfd Rename more functions to use window-/window-- prefixes.
* window.c (resize_root_window, grow_mini_window)
(shrink_mini_window): Rename Qresize_root_window to
Qwindow_resize_root_window and Qresize_root_window_vertically to
Qwindow_resize_root_window_vertically.

* window.el (normalize-live-buffer): Rename to
window-normalize-buffer.
(normalize-live-frame): Rename to window-normalize-frame.
(normalize-any-window): Rename to window-normalize-any-window.
(normalize-live-window): Rename to window-normalize-live-window.
(make-window-atom): Rename to window-make-atom.
(window-resize-reset): Rename to window--resize-reset.
(window-resize-reset-1): Rename to window--resize-reset-1.
(resize-mini-window): Rename to window--resize-mini-window.
(resize-subwindows-skip-p): Rename to
window--resize-subwindows-skip-p.
(resize-subwindows-normal): Rename to
window--resize-subwindows-normal.
(resize-subwindows): Rename to window--resize-subwindows.
(resize-other-windows): Rename to window--resize-siblings.
(resize-this-window): Rename to window--resize-this-window.
(resize-root-window): Rename to window--resize-root-window.
(resize-root-window-vertically): Rename to
window--resize-root-window-vertically.
(normalize-buffer-to-display): Rename to
window-normalize-buffer-to-display.
(normalize-buffer-to-switch-to): Rename to
window-normalize-buffer-to-switch-to.
Correspondingly update all callers of the functions listed
above.
(display-buffer-alist, display-buffer-normalize-arguments)
(display-buffer-normalize-options, display-buffer)
(display-buffer-alist-set): Use "function" instead of
"fun-with-args".
2011-06-29 14:06:08 +02:00
Paul Eggert
f13e0b08d4 * gnutls.c (Qgnutls_bootprop_verify_error): Remove unused var. 2011-06-28 09:03:59 -07:00
Martin Rudalics
d615d6d288 Use window- prefix more consistently. Fix two buffer display bugs.
* window.c (resize_window_check): Rename to window_resize_check.
(resize_window_apply): Rename to window_resize_apply.
(Fresize_window_apply): Rename to Fwindow_resize_apply.
(Fdelete_other_windows_internal, resize_frame_windows)
(Fsplit_window_internal, Fdelete_window_internal)
(grow_mini_window, shrink_mini_window)
(Fresize_mini_window_internal): Fix callers accordingly.

* window.el (resize-window-reset): Rename to window-resize-reset.
(resize-window-reset-1): Rename to window-resize-reset-1.
(resize-window): Rename to window-resize.
(window-min-height, window-min-width)
(resize-mini-window, resize-this-window, resize-root-window)
(resize-root-window-vertically, adjust-window-trailing-edge)
(enlarge-window, shrink-window, maximize-window)
(minimize-window, delete-window, quit-restore-window)
(split-window, balance-windows, balance-windows-area-adjust)
(balance-windows-area, window-state-put-2)
(display-buffer-even-window-sizes, display-buffer-set-height)
(display-buffer-set-width, set-window-text-height)
(fit-window-to-buffer): Rename all "resize-window" prefixed
calls to use the "window-resize" prefix convention.
(display-buffer-alist): Fix symbol for label specifier.
(display-buffer-reuse-window): Set reuse-dedicated to cdr of
corresponding specifier.
Reported by Juanma Barranquero <lekktu@gmail.com>.
2011-06-27 20:32:56 +02:00
Juanma Barranquero
945152374e src/makefile.w32-in: Redesign dependencies. 2011-06-27 16:59:12 +02:00
Martin Rudalics
d68443dcee Use better names for window-next/-prev and window-vchild/-hchild.
* window.c (Fwindow_vchild): Rename to Fwindow_top_child.
(Fwindow_hchild): Rename to Fwindow_left_child.
(Fwindow_next): Rename to Fwindow_next_sibling.
(Fwindow_prev): Rename to Fwindow_prev_sibling.

* window.el (window-right, window-left, window-child)
(window-child-count, window-last-child)
(window-iso-combination-p, walk-window-tree-1)
(window-atom-check-1, window-tree-1, delete-window)
(window-state-get-1, display-buffer-even-window-sizes): Adapt to
new naming conventions - window-vchild, window-hchild,
window-next and window-prev are now called window-top-child,
window-left-child, window-next-sibling and window-prev-sibling
respectively.
2011-06-27 16:05:55 +02:00
Martin Rudalics
e43b6e4346 Have overlays with window property respect clone numbers.
* buffer.c (Qclone_number): Declare static and DEFSYM it.
(sort_overlays, overlay_strings): When an overlay's clone number
matches the window's clone number process the overlay even if
the overlay's window property doesn't match the current window.
2011-06-27 11:27:44 +02:00
Jan Djärv
c7e73be5f7 Fix wm_size-hints race between KDE/KWin and Gtk+ 3.
* emacsgtkfixed.c: State that this is only used with Gtk+3.
(_EmacsFixedPrivate): Remove minwidth/height.
Add struct frame *f.
(emacs_fixed_init): Initialize priv->f.
(get_parent_class, emacs_fixed_set_min_size): Remove.
(emacs_fixed_new): Set priv->f to argument.
(emacs_fixed_get_preferred_width)
(emacs_fixed_get_preferred_height): Use min_width/height from
frames size_hint to set minimum and natural.
(XSetWMSizeHints, XSetWMNormalHints): Override these functions
and use min_width/height from frames size_hint to set
min_width/height (Bug#8919).

* emacsgtkfixed.h: State that this is only used with Gtk+3.
(emacs_fixed_set_min_size): Remove.
(emacs_fixed_new): Take frame as argument.

* gtkutil.c (xg_create_frame_widgets): Pass f to emacs_fixed_new.
(x_wm_set_size_hint): Remove call to emacs_fixed_set_min_size. Fix
indentation.
2011-06-26 20:47:07 +02:00
Eli Zaretskii
cf99dcf81a Avoid bidi-related crashes in Cperl Mode.
src/bidi.c (bidi_paragraph_init): Test for ZV_BYTE before calling
 bidi_at_paragraph_end, since fast_looking_at doesn't like to be
 called at ZV.
2011-06-26 20:23:40 +03:00
Chong Yidong
029529ac6f Fix handling of pending signals in wait_reading_process_output (Bug#8869).
* process.c (wait_reading_process_output): Bypass select if
waiting for a cell while ignoring keyboard input, and input is
pending.  Suggested by Jan Djärv.
2011-06-25 23:40:40 -04:00
Glenn Morris
5b66d427c0 ChangeLog fix. 2011-06-25 13:53:24 -07:00
Paul Eggert
948b98fd3c Merge from trunk. 2011-06-25 11:31:36 -07:00