aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Fixes for GLYPH_DEBUG.Chong Yidong2011-06-185-51/+37
| | | | | | | | | | | | | | * dispnew.c (add_window_display_history): Use BVAR. * xdisp.c (debug_method_add): Use BVAR. (check_window_end, dump_glyph_matrix, dump_glyph) (dump_glyph_row, dump_glyph_string): Convert arglist to ANSI C. * xfaces.c (check_lface_attrs, check_lface, dump_realized_face): Likewise. * xfns.c (Fx_create_frame, x_create_tip_frame): Delay image cache check till after the cache is created in init_frame_faces.
* * src/fns.c (Fsafe_length): Yet another int/Lisp_Object mixup.Stefan Monnier2011-06-172-1/+5
|
* * lisp.h: Include <limits.h>, for INT_MAX, LONG_MAX, LLONG_MAX.Paul Eggert2011-06-162-0/+5
| | | | | Without this, prin1 mishandles Lisp_Misc_Save_Value printing on hosts with pre-C99 libraries, because pD is wrongly defined to "t".
* Improve buffer-overflow checking (Bug#8873).Paul Eggert2011-06-166-57/+60
|\
| * Improve buffer-overflow checking.Paul Eggert2011-06-163-36/+19
| | | | | | | | | | | | | | | | | | | | | | * fileio.c (Finsert_file_contents): * insdel.c (insert_from_buffer_1, replace_range, replace_range_2): Remove the old (too-loose) buffer overflow checks. They weren't needed, since make_gap checks for buffer overflow. * insdel.c (make_gap_larger): Catch buffer overflows that were missed. The old code merely checked for Emacs fixnum overflow, and relied on undefined (wraparound) behavior. The new code avoids undefined behavior, and also checks for ptrdiff_t and/or size_t overflow.
| * * editfns.c: Tune. Don't use wider integers than needed. Don't use alloca.Paul Eggert2011-06-162-13/+10
| | | | | | | | Use a bigger 'string' buffer. Rewrite to avoid 'n > 0' test.
| * * editfns.c (Finsert_char): Don't dump core with very negative counts.Paul Eggert2011-06-162-2/+4
| |
| * * insdel.c (replace_range): Fix buf overflow when insbytes < outgoing.Paul Eggert2011-06-152-4/+6
| |
| * * insdel.c, lisp.h (buffer_overflow): New function.Paul Eggert2011-06-155-7/+20
| | | | | | | | | | | | | | (insert_from_buffer_1, replace_range, replace_range_2): * insdel.c (make_gap_larger): * editfns.c (Finsert_char): * fileio.c (Finsert_file_contents): Use it, to normalize wording.
| * * buffer.h (BUF_BYTES_MAX): Cast to ptrdiff_t so that it's signed.Paul Eggert2011-06-152-2/+8
|/
* Integer overflow and signedness fixes (Bug#8873).Paul Eggert2011-06-1546-531/+836
|\
| * * ccl.c (ASCENDING_ORDER): New macro, to work around GCC bug 43772.Paul Eggert2011-06-152-2/+9
| | | | | | | | (GET_CCL_RANGE, IN_INT_RANGE): Use it.
| * * fileio.c (emacs_lseek): Work around GCC bug 43772.Paul Eggert2011-06-151-1/+3
| |
| * * character.h, charset.h: Use verify_expr, not verify_true.Paul Eggert2011-06-152-24/+25
| |
| * Merge from trunk.Paul Eggert2011-06-152-0/+5
| |\ | |/ |/|
* | * src/eval.c (Fdefvaralias): Also mark the target as variable-special-p.Stefan Monnier2011-06-152-0/+5
| |
| * Merge from trunk.Paul Eggert2011-06-156-16/+275
| |\ | |/ |/|
* | Fix resize and change of scroll bar width for Gtk3.Jan Djärv2011-06-146-12/+273
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.in: Add emacsgtkfixed.o to GTK_OBJ if HAVE_GTK3. * src/emacsgtkfixed.c, src/emacsgtkfixed.h: New files. * src/gtkutil.c: Include src/emacsgtkfixed.h if HAVE_GTK3. (int_gtk_range_get_value): Move to the scroll bar part of the file. (style_changed_cb): Call update_theme_scrollbar_width and call x_set_scroll_bar_default_width and xg_frame_set_char_size for all frames. (xg_create_frame_widgets): Call emacs_fixed_new if HAVE_GTK3 (Bug#8505). Call gtk_window_set_resizable if HAVE_GTK3. (x_wm_set_size_hint): Call emacs_fixed_set_min_size with min width and height if HAVE_GTK3 (Bug#8505). (scroll_bar_width_for_theme): New variable. (update_theme_scrollbar_width): New function. (xg_get_default_scrollbar_width): Move code to update_theme_scrollbar_width, just return scroll_bar_width_for_theme. (xg_initialize): Call update_theme_scrollbar_width. * src/gtkutil.h (xg_get_default_scrollbar_width): Remove argument. * src/xfns.c (x_set_scroll_bar_default_width): Remove argument to xg_get_default_scrollbar_width.
| * * fileio.c: Don't assume EMACS_INT fits in off_t.Paul Eggert2011-06-142-8/+28
| | | | | | | | | | | | (emacs_lseek): New static function. (Finsert_file_contents, Fwrite_region): Use it. Use SEEK_SET, SEEK_CUR, SEEK_END as appropriate.
| * * fns.c (Fload_average): Don't assume 100 * load average fits in int.Paul Eggert2011-06-142-2/+4
| |
| * * fns.c (Fcopy_sequence): Don't assume vector length fits in int.Paul Eggert2011-06-142-1/+2
| |
| * * fns.c (Fnthcdr, Fsort): Don't assume list length fits in int.Paul Eggert2011-06-142-2/+3
| |
| * * fns.c: Don't overflow int when computing a list length.Paul Eggert2011-06-142-16/+40
| | | | | | | | | | | | (Fsafe_length): Return a float if the value is not representable as a fixnum. This shouldn't happen except in contrived situations. Use same QUIT_COUNT_HEURISTIC as Flength now does.
| * * fns.c (Flength): Don't overflow int when computing a list length.Paul Eggert2011-06-142-10/+16
| | | | | | | | | | | | | | Use EMACS_INT, not int, to avoid unwanted truncation on 64-bit hosts. Check for QUIT every 1024 entries rather than every other entry; that's faster and is responsive enough. Report an error instead of overflowing an integer.
| * * alloc.c: Check that resized vectors' lengths fit in fixnums.Paul Eggert2011-06-142-10/+22
| | | | | | | | | | | | | | | | (header_size, word_size): New constants. (allocate_vectorlike): Don't check size overflow here. (allocate_vector): Check it here instead, since this is the only caller of allocate_vectorlike that could cause overflow. Check that the new vector's length is representable as a fixnum.
| * * fns.c (next_almost_prime): Don't return a multiple of 3 or 5.Paul Eggert2011-06-142-7/+9
| | | | | | | | | | | | | | The previous code was bogus. For example, next_almost_prime (32) returned 39, which is undesirable as it is a multiple of 3; and next_almost_prime (24) returned 25, which is a multiple of 5 so why was the code bothering to check for multiples of 7?
| * * bytecode.c (exec_byte_code): Use ptrdiff_t, not int, for vector length.Paul Eggert2011-06-142-1/+3
| |
| * * eval.c, doprnt.c (SIZE_MAX): Remove; inttypes.h defines this now.Paul Eggert2011-06-143-10/+4
| |
| * Variadic C functions now count arguments with ptrdiff_t.Paul Eggert2011-06-1419-161/+188
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This partly undoes my 2011-03-30 change, which replaced int with size_t. Back then I didn't know that the Emacs coding style prefers signed int. Also, in the meantime I found a few more instances where arguments were being counted with int, which may truncate counts on 64-bit machines, or EMACS_INT, which may be unnecessarily wide. * lisp.h (struct Lisp_Subr.function.aMANY) (DEFUN_ARGS_MANY, internal_condition_case_n, safe_call): Arg counts are now ptrdiff_t, not size_t. All variadic functions and their callers changed accordingly. (struct gcpro.nvars): Now size_t, not size_t. All uses changed. * bytecode.c (exec_byte_code): Check maxdepth for overflow, to avoid potential buffer overrun. Don't assume arg counts fit in 'int'. * callint.c (Fcall_interactively): Check arg count for overflow, to avoid potential buffer overrun. Use signed char, not 'int', for 'varies' array, so that we needn't bother to check its size calculation for overflow. * editfns.c (Fformat): Use ptrdiff_t, not EMACS_INT, to count args. * eval.c (apply_lambda): * fns.c (Fmapconcat): Use XFASTINT, not XINT, to get args length. (struct textprop_rec.argnum): Now ptrdiff_t, not int. All uses changed. (mapconcat): Use ptrdiff_t, not int and EMACS_INT, to count args.
| * * callint.c (Fcall_interactively): Don't use index var as event count.Paul Eggert2011-06-132-2/+4
| |
| * * vm-limit.c (check_memory_limits): Fix incorrect extern function decls.Paul Eggert2011-06-133-5/+7
| | | | | | | | * mem-limits.h (SIZE): Remove; no longer used.
| * * xterm.c (x_alloc_nearest_color_1): Go back to original algorithm.Paul Eggert2011-06-132-7/+5
| |
| * Merge from trunk.Paul Eggert2011-06-1317-887/+725
| |\ | |/ |/|
* | Fix make_frame, introduce Vtemp_buffer_show_specifiers, cleanup doc-strings.Martin Rudalics2011-06-123-5/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | * frame.c (make_frame): Call other_buffer_safely instead of other_buffer. * window.c (temp_output_buffer_show): Call display_buffer with second argument Vtemp_buffer_show_specifiers and reset latter immediately after the call. (Vtemp_buffer_show_specifiers): New variable. (auto_window_vscroll_p, next_screen_context_lines) (Vscroll_preserve_screen_position): Remove leading asterisks from doc-strings.
* | Fix minor problems found by GCC 4.6.0 static checking.Paul Eggert2011-06-1115-47/+75
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * buffer.c (Qclone_number): Remove for now, as it's unused. (record_buffer, Funrecord_buffer): Rename local to avoid shadowing. (record_buffer): Remove unused local. * frame.c (other_visible_frames, frame_buffer_list): Now static. (set_frame_buffer_list): Remove; unused. * frame.h (other_visible_frames): Remove decl. * keyboard.h (menu_items_inuse): Declare only if USE_GTK || USE_MOTIF. * lisp.h (frame_buffer_list, set_frame_buffer_list): Remove decls. (add_gpm_wait_descriptor, delete_gpm_wait_descriptor): Declare only if HAVE_GPM. * menu.c (menu_items_inuse): Now static unless USE_GTK || USE_MOTIF. * process.c (add_gpm_wait_descriptor, delete_gpm_wait_descriptor): Define only if HAVE_GPM. * widget.c (EmacsFrameResize, emacsFrameClassRec): Now static. (update_hints_inhibit): Remove; never set. All uses removed. * widgetprv.h (emacsFrameClassRec): Remove decl. * window.c (delete_deletable_window): Now returns void, since it wasn't returning anything. (compare_window_configurations): Remove unused locals. * xfns.c (x_set_scroll_bar_default_width): Remove unused locals. * xmenu.c (x_menu_set_in_use): Define only if USE_GTK || USE_MOTIF. (dialog_selection_callback) [!USE_GTK]: Prefer intptr_t for integers the same widths as pointers. This follows up on the 2011-05-06 patch. * xterm.c (x_alloc_lighter_color_for_widget): Define only if USE_LUCID. * xterm.h: Likewise. (x_menu_set_in_use): Declare only if USE_GTK || USE_MOTIF.
| * \ Merge from trunk.Paul Eggert2011-06-113-90/+74
| |\ \ | |/ / |/| |
* | | src/makefile.w32-in: Update dependencies.Juanma Barranquero2011-06-122-6/+6
| | |
* | | Handle gif subimage animation delay correctly.Chong Yidong2011-06-112-83/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/image.el (image-animated-p): Return animation delay in seconds. Avoid bit manipulation in Lisp; use `delay' entry in the metadata. (image-animate-timeout): Remove DELAY argument. Use image-animated-p to get animation delay for each frame. (image-animate): Caller changed. * src/image.c (gif_load): Add animation frame delay to the metadata. (syms_of_image): Use DEFSYM. New symbol `delay'.
| * | * xmenu.c (x_menu_set_in_use): Fix incorrect assumption.Paul Eggert2011-06-112-2/+2
| | |
| * | * buffer.c (Qclone_number): Remove for now, as it's unused.Paul Eggert2011-06-1115-49/+76
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (record_buffer, Funrecord_buffer): Rename local to avoid shadowing. (record_buffer): Remove unused local. * frame.c (other_visible_frames, frame_buffer_list): Now static. (set_frame_buffer_list): Remove; unused. * frame.h (other_visible_frames): Remove decl. * keyboard.h (menu_items_inuse): Declare only if USE_GTK || USE_MOTIF. * lisp.h (frame_buffer_list, set_frame_buffer_list): Remove decls. (add_gpm_wait_descriptor, delete_gpm_wait_descriptor): Declare only if HAVE_GPM. * menu.c (menu_items_inuse): Now static unless USE_GTK || USE_MOTIF. * process.c (add_gpm_wait_descriptor, delete_gpm_wait_descriptor): Define only if HAVE_GPM. * widget.c (EmacsFrameResize, emacsFrameClassRec): Now static. (update_hints_inhibit): Remove; never set. All uses removed. * widgetprv.h (emacsFrameClassRec): Remove decl. * window.c (delete_deletable_window): Now returns void, since it wasn't returning anything. (compare_window_configurations): Remove unused locals. * xfns.c (x_set_scroll_bar_default_width): Remove unused locals. * xmenu.c (x_menu_set_in_use): Define only if USE_GTK || USE_MOTIF. Omit no-longer-needed #ifdef USE_X_TOOLKIT, since USE_X_TOOLKIT is implied by USE_GTK || USE_MOTIF. (dialog_selection_callback) [!USE_GTK]: Prefer intptr_t for integers the same widths as pointers. This follows up on the 2011-05-06 patch. * xterm.c (x_alloc_lighter_color_for_widget): Define only if USE_LUCID. * xterm.h: Likewise. (x_menu_set_in_use): Declare only if USE_GTK || USE_MOTIF.
* | Window configuration, balancing and fit-to-buffer rewrites.Martin Rudalics2011-06-112-224/+156
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * window.c (delete_deletable_window): Re-add. (Fset_window_configuration): Rewrite to handle dead buffers and consequently deletable windows. (window_tree, Fwindow_tree): Remove. Supply functionality in window.el. (compare_window_configurations): Simplify code. * window.el (window-tree-1, window-tree): New functions, moving the latter to window.el. (bw-get-tree, bw-get-tree-1, bw-find-tree-sub) (bw-find-tree-sub-1, bw-l, bw-t, bw-r, bw-b, bw-dir, bw-eqdir) (bw-refresh-edges): Remove. (balance-windows-1, balance-windows-2): New functions. (balance-windows): Rewrite in terms of window tree functions, balance-windows-1 and balance-windows-2. (bw-adjust-window): Remove. (balance-windows-area-adjust): New function with functionality of bw-adjust-window but using resize-window. (set-window-text-height): Rewrite doc-string. Use normalize-live-window and resize-window. (enlarge-window-horizontally, shrink-window-horizontally): Rename argument to DELTA. (window-buffer-height): New function. (fit-window-to-buffer, shrink-window-if-larger-than-buffer): Rewrite using new window resize routines. (kill-buffer-and-window, mouse-autoselect-window-select): Use ignore-errors instead of condition-case. (quit-window): Call delete-frame instead of delete-windows-on for the only buffer on frame.
* | * src/image.c (imagemagick_load_image): Fix type mismatch.Andreas Schwab2011-06-112-3/+6
| | | | | | | | (Fimagemagick_types): Likewise.
* | * src/window.h (replace_buffer_in_windows): Declare.Andreas Schwab2011-06-112-0/+5
| |
* | Move/add window-buffer-related functions to window.el.Martin Rudalics2011-06-115-524/+387
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * buffer.c: New Lisp objects Qbuffer_list_update_hook and Qclone_number. Remove external declaration of Qdelete_window. (Fbuffer_list): Rewrite doc-string. Minor restructuring of code. (Fget_buffer_create, Fmake_indirect_buffer, Frename_buffer): Run Qbuffer_list_update_hook if allowed. (Fother_buffer): Rewrite doc-string. Major rewrite for new buffer list implementation. (other_buffer_safely): New function. (Fkill_buffer): Replace call to replace_buffer_in_all_windows by calls to replace_buffer_in_windows and replace_buffer_in_windows_safely. Run Qbuffer_list_update_hook if allowed. (record_buffer): Inhibit quitting and rewrite using quittable functions. Run Qbuffer_list_update_hook if allowed. (Frecord_buffer, Funrecord_buffer): New functions. (switch_to_buffer_1, Fswitch_to_buffer): Remove. Move switch-to-buffer to window.el. (bury-buffer): Move to window.el. (Vbuffer_list_update_hook): New variable. * lisp.h (other_buffer_safely): Add prototype in buffer.c section. * window.h (resize_frame_windows): Move up in code. (Fwindow_frame): Remove EXFUN. (replace_buffer_in_all_windows): Remove prototype. (replace_buffer_in_windows_safely): Add prototype. * window.c: Declare Qdelete_window static again. Move down declaration of select_count. (Fnext_window, Fprevious_window): Rewrite doc-strings. (Fother_window): Move to window.el. (window_loop): Remove DELETE_BUFFER_WINDOWS and UNSHOW_BUFFER cases. Add REPLACE_BUFFER_IN_WINDOWS_SAFELY case. (Fdelete_windows_on, Freplace_buffer_in_windows): Move to window.el. (replace_buffer_in_windows): Implement by calling Qreplace_buffer_in_windows. (replace_buffer_in_all_windows): Remove with some functionality moved into replace_buffer_in_windows_safely. (replace_buffer_in_windows_safely): New function. (select_window_norecord, select_frame_norecord): Move in front of run_window_configuration_change_hook. Remove now obsolete declarations. (Fset_window_buffer): Rewrite doc-string. Call Qrecord_window_buffer. (keys_of_window): Move binding for other-window to window.el. * loadup.el (top-level): Load window before files for the sake of replace-buffer-in-windows. * files.el (read-buffer-to-switch) (switch-to-buffer-other-window) (switch-to-buffer-other-frame, display-buffer-other-frame): Move to window.el. * simple.el (get-next-valid-buffer, last-buffer, next-buffer) (previous-buffer): Move to window.el. * bindings.el (unbury-buffer): Move to window.el. * window.el (delete-other-windows-vertically): Move after definition of delete-other-windows. (other-window, delete-windows-on, replace-buffer-in-windows): Move here from window.c. (record-window-buffer, unrecord-window-buffer) (set-window-buffer-start-and-point, switch-to-prev-buffer) (switch-to-next-buffer): New functions. (get-next-valid-buffer, last-buffer, next-buffer): Move here from simple.el. Call switch-to-next-buffer. (previous-buffer): Move here from simple.el. Call switch-to-prev-buffer. (bury-buffer): Move here from buffer.c. Switch to previous buffer when window cannot be deleted. (unbury-buffer): Move here from bindings.el. (ctl-x-map): Move binding for other-window from window.c to here. (read-buffer-to-switch, switch-to-buffer-other-window) (switch-to-buffer-other-frame): Move here from files.el. (normalize-buffer-to-switch-to): New functions. (switch-to-buffer): Move here from buffer.c. Use read-buffer-to-switch and normalize-buffer-to-switch-to.
| * * xterm.c (x_alloc_nearest_color_1): Use a more-precise algorithmPaul Eggert2011-06-132-5/+11
| | | | | | | | | | for nearest color, one that neither overflows nor relies on unsigned arithmetic.
| * Remove unnecessary casts.Paul Eggert2011-06-124-11/+12
| | | | | | | | | | | | | | * xterm.c (x_term_init): * xfns.c (x_set_border_pixel): * widget.c (create_frame_gcs): Remove casts to unsigned long etc. These aren't needed now that we assume ANSI C.
| * * sound.c (Fplay_sound_internal): Remove cast to unsigned long.Paul Eggert2011-06-122-1/+5
| | | | | | | | | | It's more likely to cause problems (due to unsigned overflow) than to cure them.
| * * dired.c (Ffile_attributes): Don't use 32-bit hack on 64-bit hosts.Paul Eggert2011-06-122-5/+10
| |
| * * unexelf.c (unexec): Don't assume BSS addr fits in unsigned.Paul Eggert2011-06-122-1/+4
| |
| * * xterm.c (handle_one_xevent): Omit unnecessary casts to unsigned.Paul Eggert2011-06-122-6/+5
| |