Commit graph

31332 commits

Author SHA1 Message Date
Paul Eggert
666398f371 * buffer.c (Fgenerate_new_buffer_name): Use EMACS_INT for count, not int. 2011-06-08 17:40:43 -07:00
Paul Eggert
e762cafe71 * data.c (Qcompiled_function): Now static. 2011-06-08 17:19:18 -07:00
Paul Eggert
c6f072e733 * window.c (window_body_lines): Now static. 2011-06-08 14:45:17 -07:00
Paul Eggert
20ce591249 * image.c (gif_load): Rename local to avoid shadowing. 2011-06-08 14:44:48 -07:00
Paul Eggert
a3dd1c67cd * print.c (print_object): Fix typo in ptrdiff_t printing. 2011-06-08 14:43:46 -07:00
Paul Eggert
8692a7dea5 Merge from trunk. 2011-06-08 14:36:31 -07:00
Paul Eggert
9c4c5f81ce * lisp.h (SAFE_ALLOCA_LISP): Check for integer overflow.
(struct Lisp_Save_Value): Use ptrdiff_t, not int, for 'integer' member.
* alloc.c (make_save_value): Integer argument is now of type
ptrdiff_t, not int.
(mark_object): Use ptrdiff_t, not int.
* lisp.h (pD): New macro.
* print.c (print_object): Use it.
2011-06-08 12:54:32 -07:00
Paul Eggert
e46bb31a9f * alloc.c (allocate_pseudovector): Don't use EMACS_INT when int would do. 2011-06-08 12:18:46 -07:00
Paul Eggert
6349ae4d9c * alloc.c (inhibit_garbage_collection): Set gc_cons_threshold to max value.
Previously, this ceilinged at INT_MAX, but that doesn't work on
64-bit machines.
2011-06-08 12:07:55 -07:00
Paul Eggert
211a0b2a70 * alloc.c (nzombies, ngcs, max_live, max_zombies): Now EMACS_INT, not 'int'. 2011-06-08 12:01:08 -07:00
Paul Eggert
5a25e253b4 * alloc.c: (n_interval_blocks, n_string_blocks, n_float_blocks, n_cons_blocks)
(n_vectors, n_symbol_blocks, n_marker_blocks): Remove.
These were 'int' variables that could overflow on 64-bit hosts;
they were never used, so remove them instead of repairing them.
2011-06-08 11:51:02 -07:00
Paul Eggert
c0c5c8ae36 * alloc.c: Use EMACS_INT, not int, to count objects.
(total_conses, total_markers, total_symbols, total_vector_size)
(total_free_conses, total_free_markers, total_free_symbols)
(total_free_floats, total_floats, total_free_intervals, total_intervals)
(total_strings, total_free_strings):
Now EMACS_INT, not int.  All uses changed.
(Fgarbage_collect): Compute overall total using a double, so that
integer overflow is less likely to be a problem.  Check for overflow
when converting back to an integer.
2011-06-08 11:43:44 -07:00
Paul Eggert
b643996157 * alloc.c (mark_vectorlike, mark_char_table, mark_object): Avoid EMACS_UINT
when a (possibly-narrower) signed value would do just as well.
We prefer using signed arithmetic, to avoid comparison confusion.
2011-06-08 10:54:58 -07:00
Paul Eggert
86f61a158a * alloc.c (allocate_vectorlike): Check for ptrdiff_t overflow. 2011-06-08 10:48:26 -07:00
Paul Eggert
c78baabfc2 * alloc.c (Fmake_bool_vector): Don't assume vector size fits in int. 2011-06-08 10:43:47 -07:00
Paul Eggert
c9d624c605 * alloc.c: Catch some string size overflows that we were missing.
(XMALLOC_OVERRUN_CHECK_SIZE) [!XMALLOC_OVERRUN_CHECK]: Define to 0,
for convenience in STRING_BYTES_MAX.
(STRING_BYTES_MAX): New macro, superseding the old one in lisp.h.
The definition here is exact; the one in lisp.h was approximate.
(allocate_string_data): Check for string overflow.  This catches
some instances we weren't catching before.  Also, it catches
size_t overflow on (unusual) hosts where SIZE_MAX <= min
(PTRDIFF_MAX, MOST_POSITIVE_FIXNUM), e.g., when size_t is 32 bits
and ptrdiff_t and EMACS_INT are both 64 bits.
* character.c, coding.c, doprnt.c, editfns.c, eval.c:
All uses of STRING_BYTES_MAX replaced by STRING_BYTES_BOUND.
* lisp.h (STRING_BYTES_BOUND): Renamed from STRING_BYTES_MAX.
2011-06-08 10:22:24 -07:00
Martin Rudalics
b9e809c2d7 New symbols in window.c.
* window.c: (WINDOW_TOTAL_SIZE, MIN_SAFE_WINDOW_WIDTH)
(MIN_SAFE_WINDOW_HEIGHT): Really remove them from window.c.
(syms_of_window): New Lisp objects Qrecord_window_buffer,
Qwindow_deletable_p, Qdelete_window, Qreplace_buffer_in_windows,
Qget_mru_window, Qresize_root_window,
Qresize_root_window_vertically, Qsafe, Qabove, Qbelow,
Qauto_buffer_name; staticpro them.
2011-06-08 15:00:51 +02:00
Martin Rudalics
496e208ef9 Add some new members to window structure in window.h.
* window.h (window): Add some new members to window structure -
normal_lines, normal_cols, new_total, new_normal, clone_number,
splits, nest, prev_buffers, next_buffers.
(WINDOW_TOTAL_SIZE): Move here from window.c.
(MIN_SAFE_WINDOW_WIDTH, MIN_SAFE_WINDOW_HEIGHT): Define.

* window.c (WINDOW_TOTAL_SIZE): Move to window.h.
(make_dummy_parent): Set new members of windows structure.
(make_window): Move down in code.  Handle new members of window
structure.
(Fwindow_clone_number, Fwindow_splits, Fset_window_splits)
(Fwindow_nest, Fset_window_nest, Fwindow_new_total)
(Fwindow_normal_size, Fwindow_new_normal, Fwindow_prev_buffers)
(Fset_window_prev_buffers, Fwindow_next_buffers)
(Fset_window_next_buffers, Fset_window_clone_number): New
functions.
(Fwindow_hscroll, Fwindow_at, Fwindow_point, Fwindow_start)
(Fwindow_end, Fwindow_line_height, Fset_window_dedicated_p):
Doc-string fixes.
(Fwindow_parameters, Fwindow_parameter, Fset_window_parameter):
Argument WINDOW can be now internal window too.
(Fwindow_use_time): Move up in code.
(Fget_buffer_window): Rename argument FRAME to ALL-FRAMES.
Rewrite doc-string.
(Fset_window_configuration, saved_window)
(Fcurrent_window_configuration, save_window_save): Handle new
members of window structure.
2011-06-08 10:35:20 +02:00
Martin Rudalics
f3d1777e71 window-height, window-width, and window-full-width-p are now in window.el.
* window.c (Fwindow_height, Fwindow_width, Fwindow_full_width_p):
Remove.
* window.el (window-height): Defalias to window-total-height.
(window-width): Defalias to window-body-width.
2011-06-08 07:40:45 +02:00
Martin Rudalics
190b47e683 Move get-lru-window and get-largest-window to window.el.
* window.c (window_loop): Remove handling of GET_LRU_WINDOW and
GET_LARGEST_WINDOW.
(Fget_lru_window, Fget_largest_window): Move to window.el.

* window.el (get-lru-window, get-largest-window): Move here from
window.c.  Rename first argument to ALL-FRAMES.  Rephrase
doc-strings.
(get-buffer-window-list): Rewrite using window-list-1.  Rephrase
doc-string.
2011-06-07 15:23:08 +02:00
Martin Rudalics
fa8a67e674 Make delete_all_subwindows argument a Lisp_Object.
* window.c (delete_window, Fset_window_configuration): Call
delete_all_subwindows with window as argument.
(delete_all_subwindows): Take a window as argument and not a
structure.  Rewrite.

* window.h: delete_all_subwindows now takes a Lisp_Object as
argument.

* frame.c (delete_frame): Call delete_all_subwindows with root
window as argument.
2011-06-07 14:51:07 +02:00
Martin Rudalics
abde8f8c7b Install some window-size related functions and window-list-1.
* window.c (Fwindow_total_size, Fwindow_left_column)
(Fwindow_top_line, window_body_lines, Fwindow_body_size)
(Fwindow_list_1): New functions.
(window_box_text_cols): Replace with window_body_cols.
(Fwindow_width, Fscroll_left, Fscroll_right): Use
window_body_cols instead of window_box_text_cols.

* window.h: Extern window_body_cols instead of
window_box_text_cols.

* indent.c (compute_motion, Fcompute_motion): Use
window_body_cols instead of window_box_text_cols.
2011-06-07 11:26:21 +02:00
Paul Eggert
353032ce71 * character.c (string_escape_byte8): Fix nbytes/nchars typo. 2011-06-06 23:09:32 -07:00
Paul Eggert
2bccce07c2 * alloc.c (Fmake_string): Check for out-of-range init. 2011-06-06 22:32:27 -07:00
Daniel Colascione
a54e348216 * fns.c (Fputhash): Document return value. 2011-06-06 18:39:26 -07:00
Chong Yidong
60002bf5c8 * src/image.c (gif_load): Implement gif89a spec "no disposal" method. 2011-06-06 17:03:43 -04:00
Paul Eggert
b862a52ad3 Add Bug#8794 to ChangeLog entry. 2011-06-06 11:37:51 -07:00
Paul Eggert
0c1477cd00 Merge: Cons<->int and similar integer overflow fixes. 2011-06-06 11:36:36 -07:00
Paul Eggert
77984278b9 Merge from trunk. 2011-06-06 10:58:07 -07:00
Stefan Monnier
d6d100dd7c * src/window.h (Fwindow_frame): Declare. 2011-06-06 13:54:34 -03:00
Paul Eggert
2b6148e42e * alloc.c: Simplify handling of large-request failures (Bug#8800).
(SPARE_MEMORY): Always define.
(LARGE_REQUEST): Remove.
(memory_full): Use SPARE_MEMORY rather than LARGE_REQUEST.
2011-06-06 09:41:21 -07:00
Martin Rudalics
727e958ef0 Move some window-related functions from frame.c to window.c.
* lisp.h: Move EXFUNS for Fframe_root_window,
Fframe_first_window and Fset_frame_selected_window to window.h.

* window.h: Move EXFUNS for Fframe_root_window,
Fframe_first_window and Fset_frame_selected_window here from
lisp.h.

* frame.c (Fwindow_frame, Fframe_first_window)
(Fframe_root_window, Fframe_selected_window)
(Fset_frame_selected_window): Move to window.c.
(Factive_minibuffer_window): Move to minibuf.c.
(Fother_visible_frames_p): New function.

* minibuf.c (Factive_minibuffer_window): Move here from frame.c.

* window.c (Fwindow_frame): Move here from frame.c.  Accept any
window as argument.
(Fframe_root_window, Fframe_first_window)
(Fframe_selected_window): Move here from frame.c.  Accept frame
or arbitrary window as argument.  Update doc-strings.
(Fminibuffer_window): Move up in code.
(Fwindow_minibuffer_p): Move up in code and simplify.
(Fset_frame_selected_window): Move here from frame.c.  Marginal
rewrite.
(Fselected_window, select_window, Fselect_window): Move up in
code.  Minor doc-string fixes.
2011-06-06 15:57:49 +02:00
Martin Rudalics
bf60a96bc6 Expose window-tree functions in Elisp.
(Fwindow_buffer): Move up and rewrite doc-string.
(Fwindow_parent, Fwindow_vchild, Fwindow_hchild, Fwindow_next)
(Fwindow_prev): New functions.
2011-06-06 11:09:42 +02:00
Paul Eggert
be44ca6cd4 Check for overflow when converting integer to cons and back.
* charset.c (Fdefine_charset_internal, Fdecode_char):
Use cons_to_unsigned to catch overflow.
(Fencode_char): Use INTEGER_TO_CONS.
* composite.h (LGLYPH_CODE): Use cons_to_unsigned.
(LGLYPH_SET_CODE): Use INTEGER_TO_CONS.
* data.c (long_to_cons, cons_to_long): Remove.
(cons_to_unsigned, cons_to_signed): New functions.
These signal an error for invalid or out-of-range values.
* dired.c (Ffile_attributes): Use INTEGER_TO_CONS.
* fileio.c (Fset_visited_file_modtime): Use CONS_TO_INTEGER.
* font.c (Ffont_variation_glyphs):
* fontset.c (Finternal_char_font): Use INTEGER_TO_CONS.
* lisp.h: Include <intprops.h>.
(INTEGER_TO_CONS, CONS_TO_INTEGER): New macros.
(cons_to_signed, cons_to_unsigned): New decls.
(long_to_cons, cons_to_long): Remove decls.
* undo.c (record_first_change): Use INTEGER_TO_CONS.
(Fprimitive_undo): Use CONS_TO_INTEGER.
* xfns.c (Fx_window_property): Likewise.
* xselect.c: Include <limits.h>.
(x_own_selection, selection_data_to_lisp_data):
Use INTEGER_TO_CONS.
(x_handle_selection_request, x_handle_selection_clear)
(x_get_foreign_selection, Fx_disown_selection_internal)
(Fx_get_atom_name, x_send_client_event): Use CONS_TO_INTEGER.
(lisp_data_to_selection_data): Use cons_to_unsigned.
(x_fill_property_data): Use cons_to_signed.
Report values out of range.
2011-06-06 01:29:01 -07:00
Martin Rudalics
f230ecc962 Prepare for exposing window-tree functions in Elisp.
* window.c (decode_window, decode_any_window): Move up in code.
(Fwindowp, Fwindow_live_p): Rewrite doc-strings.
(inhibit_frame_unsplittable): Remove unused variable.
2011-06-06 10:13:36 +02:00
Paul Eggert
d1f3d2afe1 Check for buffer and string overflow more precisely.
* buffer.h (BUF_BYTES_MAX): New macro.
* lisp.h (STRING_BYTES_MAX): New macro.
* alloc.c (Fmake_string):
* character.c (string_escape_byte8):
* coding.c (coding_alloc_by_realloc):
* doprnt.c (doprnt):
* editfns.c (Fformat):
* eval.c (verror):
Use STRING_BYTES_MAX, not MOST_POSITIVE_FIXNUM,
since they may not be the same number.
* editfns.c (Finsert_char):
* fileio.c (Finsert_file_contents):
Likewise for BUF_BYTES_MAX.
2011-06-05 23:16:12 -07:00
Paul Eggert
dd52fcea06 * image.c: Use ptrdiff_t, not int, for sizes.
(slurp_file): Switch from int to ptrdiff_t.
All uses changed.
(slurp_file): Check that file size fits in both size_t (for
malloc) and ptrdiff_t (for sanity and safety).
2011-06-05 23:10:06 -07:00
Paul Eggert
7f9bbdbbd6 * fileio.c (Fverify_visited_file_modtime): Avoid time overflow
if b->modtime has its maximal value.
2011-06-05 22:57:31 -07:00
Paul Eggert
dfe18f824f * dired.c (Ffile_attributes): Don't assume EMACS_INT has >32 bits. 2011-06-05 22:55:38 -07:00
Paul Eggert
0157c76139 Don't assume time_t can fit into int.
* buffer.h (struct buffer.modtime): Now time_t, not int.
* fileio.c (Fvisited_file_modtime): No need for time_t cast now.
* undo.c (Fprimitive_undo): Use time_t, not int, for time_t value.
2011-06-05 22:50:29 -07:00
Paul Eggert
0c671da60d Minor fixes for signed vs unsigned integers.
* character.h (MAYBE_UNIFY_CHAR):
* charset.c (maybe_unify_char):
* keyboard.c (read_char, reorder_modifiers):
XINT -> XFASTINT, since the integer must be nonnegative.
* ftfont.c (ftfont_spec_pattern):
* keymap.c (access_keymap, silly_event_symbol_error):
XUINT -> XFASTINT, since the integer must be nonnegative.
(Fsingle_key_description, preferred_sequence_p): XUINT -> XINT,
since it makes no difference and we prefer signed.
* keyboard.c (record_char): Use XUINT when all the neighbors do.
(access_keymap): NATNUMP -> INTEGERP, since the integer must be
nonnegative.
2011-06-05 22:48:28 -07:00
Paul Eggert
4d09bcf621 * alloc.c (memory_full) [SYSTEM_MALLOC]: Port to MacO).
Fixes: debbugs:8800
2011-06-05 21:54:23 -07:00
Andreas Schwab
172418ad54 Fixes: debbugs:8806
* src/editfns.c (Fformat): Correctly handle zero flag with hexadecimal
format.
2011-06-06 00:46:26 +02:00
Andreas Schwab
43f862f74e * src/gtkutil.c (xg_get_default_scrollbar_width): Avoid warning. 2011-06-06 00:20:42 +02:00
Andreas Schwab
810928a2bf * src/xfns.c (x_set_scroll_bar_default_width): Move declarations
before statements.
2011-06-06 00:20:42 +02:00
Jan Djärv
a059fe247c Handle scroll bar width larger than 16 for GTK3.
* gtkutil.c (xg_get_default_scrollbar_width): New function.

* gtkutil.h: Declare xg_get_default_scrollbar_width.

* xfns.c (x_set_scroll_bar_default_width): If USE_GTK, get
min width by calling x_set_scroll_bar_default_width.

Fixes: debbugs:8505
2011-06-05 21:04:51 +02:00
Juanma Barranquero
989bf36895 src/xdisp.c (single_display_spec_intangible_p): Remove declaration. 2011-06-05 02:14:08 +02:00
Chong Yidong
de65b42cbf * src/xselect.c (x_get_foreign_selection): Reduce scope of x_catch_errors (Bug#8790). 2011-06-04 18:08:32 -04:00
Chong Yidong
4b80f6746d Handle errors when saving to clipboard manager (Bug#8779).
* src/xselect.c (x_clipboard_manager_save): Remove redundant arg.
(x_clipboard_manager_save): Add return value.
(x_clipboard_manager_error_1, x_clipboard_manager_error_2): New
error handlers.
(x_clipboard_manager_save_frame, x_clipboard_manager_save_all):
Obey Vx_select_enable_clipboard_manager.  Catch errors in
x_clipboard_manager_save (Bug#8779).
(Vx_select_enable_clipboard_manager): New variable.
2011-06-04 17:02:42 -04:00
Glenn Morris
99a33b77e1 Merge from emacs-23; up to 2010-06-12T17:12:15Z!cyd@stupidchicken.com. 2011-06-04 11:29:18 -07:00