- 14 Jun, 2011 7 commits
-
-
Paul Eggert authored
(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.
-
Paul Eggert authored
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?
-
Paul Eggert authored
-
Paul Eggert authored
-
Paul Eggert authored
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.
-
Paul Eggert authored
-
Paul Eggert authored
* mem-limits.h (SIZE): Remove; no longer used.
-
- 13 Jun, 2011 24 commits
-
-
Paul Eggert authored
-
Paul Eggert authored
for nearest color, one that neither overflows nor relies on unsigned arithmetic.
-
Paul Eggert authored
* 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.
-
Paul Eggert authored
It's more likely to cause problems (due to unsigned overflow) than to cure them.
-
Paul Eggert authored
-
Paul Eggert authored
-
Paul Eggert authored
-
Paul Eggert authored
-
Paul Eggert authored
-
Paul Eggert authored
-
Paul Eggert authored
* dispextern.h (merge_faces): * xfaces.c (merge_faces): * xdisp.c (get_next_display_element): (next_element_from_display_vector): Don't assume EMACS_INT fits in int.
-
Paul Eggert authored
* fontset.c, lisp.h, xdisp.c: All uses changed.
-
Paul Eggert authored
-
Paul Eggert authored
This doesn't fix any bugs. Use int to hold character, instead of constantly refetching from Emacs object. Use XFASTINT, not XINT, for value known to be a character. Don't bother comparing a single byte to 0400, as it's always less.
-
Paul Eggert authored
-
Paul Eggert authored
-
Paul Eggert authored
for characters.
-
Paul Eggert authored
-
Paul Eggert authored
Without this fix, on a 64-bit host (aset S 0 4294967386) would incorrectly succeed when S was a string, because 4294967386 was truncated before it was used.
-
Paul Eggert authored
Otherwise, an out-of-range integer could cause undefined behavior on a 64-bit host.
-
Paul Eggert authored
(fill_gstring_body, composition_compute_stop_pos): Use int, not EMACS_INT, for values that are known to be in character range. This doesn't fix any bugs but is the usual style inside Emacs and may generate better code on 32-bit machines.
-
Paul Eggert authored
This is for reasons similar to the recent CHAR_STRING fix. * charset.c (Fencode_char): Check that character arg is actually a character. Pass an int to ENCODE_CHAR. * charset.h (ENCODE_CHAR): Verify that the character argument is no wider than 'int', as a compile-time check to prevent future regressions in this area.
-
Paul Eggert authored
-
Paul Eggert authored
Otherwise, CHAR_STRING would do the wrong thing on a 64-bit platform, by silently ignoring the top 32 bits, allowing some values that were far too large to be valid characters. * character.h: Include <verify.h>. (CHAR_STRING, CHAR_STRING_ADVANCE): Verify that the character arguments are no wider than unsigned, as a compile-time check to prevent future regressions in this area. * data.c (Faset): * editfns.c (Fchar_to_string, general_insert_function, Finsert_char): (Fsubst_char_in_region): * fns.c (concat): * xdisp.c (decode_mode_spec_coding): Adjust to CHAR_STRING's new requirement. * editfns.c (Finsert_char, Fsubst_char_in_region): * fns.c (concat): Check that character args are actually characters. Without this test, these functions did the wrong thing with wildly out-of-range values on 64-bit hosts.
-
- 12 Jun, 2011 5 commits
-
-
Paul Eggert authored
These casts should not be needed on 32-bit hosts, either. * keyboard.c (read_char): * lread.c (Fload): Remove casts to unsigned.
-
Paul Eggert authored
This fixes comparison bugs on 64-bit hosts. (ASCII_CHAR_P): Use it. * casefiddle.c (casify_object): * character.h (ASCII_BYTE_P, CHAR_VALID_P): (SINGLE_BYTE_CHAR_P, CHAR_STRING): * composite.h (COMPOSITION_ENCODE_RULE_VALID): * dispextern.h (FACE_FROM_ID): * keyboard.c (read_char): Use UNSIGNED_CMP.
-
Martin Rudalics authored
* 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.
-
Paul Eggert authored
-
Juanma Barranquero authored
-
- 11 Jun, 2011 4 commits
-
-
Chong Yidong authored
* 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'.
-
Paul Eggert authored
(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.
-
Martin Rudalics authored
* 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.
-
Andreas Schwab authored
(Fimagemagick_types): Likewise.
-