Make `(type graphic)' match `x', `w32' and `ns', like the manual says.
[bpt/emacs.git] / src / ChangeLog
CommitLineData
6612f0bf
PE
12011-09-11 Paul Eggert <eggert@cs.ucla.edu>
2
3 * keymap.h (KEY_DESCRIPTION_SIZE, push_key_description): Move decls
4 here ...
5 * lisp.h: ... from here. push_key_description is no longer
6 defined in keyboard.c, so its declaration should not be in
7 lisp.h's "Defined in keyboard.c" section, and KEY_DESCRIPTION_SIZE
8 logically belongs with push_key_description.
9
dfb3f755
PE
102011-09-10 Paul Eggert <eggert@cs.ucla.edu>
11
12 * buffer.h: Include <sys/types.h> instead of <time.h>.
13 Otherwise, off_t wasn't defined on FreeBSD 9.0-BETA2 i386.
14 Problem reported by Herbert J. Skuhra.
15
3134906c
LMI
162011-09-10 Lars Magne Ingebrigtsen <larsi@gnus.org>
17
18 * xml.c (parse_region): Make the parsing work for
19 non-comment-starting XML files again (bug#9144).
20
8d903f4e
AS
212011-09-10 Andreas Schwab <schwab@linux-m68k.org>
22
23 * image.c (gif_load): Fix calculation of bottom and right corner.
24 (Bug#9468)
25
80ad64f4
EZ
262011-09-10 Eli Zaretskii <eliz@gnu.org>
27
28 * xdisp.c (MAX_DISP_SCAN): Decrease to 250. Prevents sluggish
29 redisplay in small windows.
30
208a048d
EZ
312011-09-09 Eli Zaretskii <eliz@gnu.org>
32
33 * frame.c (x_report_frame_params): Cast to avoid compiler warnings.
34
9b1c252e
MR
352011-09-08 Martin Rudalics <rudalics@gmx.at>
36
37 * window.c (Fset_window_prev_buffers, Fset_window_next_buffers):
38 Operate on live windows only.
39
2949f33b
JB
402011-09-08 Juanma Barranquero <lekktu@gmail.com>
41
42 * emacs.c (my_heap_start): #ifdef to avoid warnings when unused.
43
e08dcafd
EZ
442011-09-07 Eli Zaretskii <eliz@gnu.org>
45
46 * xdisp.c (move_it_in_display_line_to): Call RESTORE_IT on ppos_it
47 only under bidi iteration.
48
115b96bd
JD
492011-09-07 Jan Djärv <jan.h.d@swipnet.se>
50
51 * gtkutil.c (xg_make_tool_item): Insert comment about eventbox.
52
c8199d0f
PE
532011-09-06 Paul Eggert <eggert@cs.ucla.edu>
54
55 isnan: Fix porting problem to Solaris 10 with bundled gcc.
56 Without this fix, the command to link temacs failed due to an
57 undefined symbol __builtin_isnan. This is because
58 /usr/include/iso/math_c99.h #defines isnan(x) to
59 __builtin_isnan(x), but the bundled gcc, which identifies itself
60 as gcc 3.4.3 (csl-sol210-3_4-branch+sol_rpath), does not have
61 a __builtin_isnan.
62 * floatfns.c (isnan): #undef, and then #define to a clone of
63 what's in data.c.
64 (Fisnan): Always define, since it's always available now.
65 (syms_of_floatfns): Always define isnan at the Lisp level.
66
e39b275c 672011-09-06 Paul Eggert <eggert@cs.ucla.edu>
1c262cae
PE
68
69 * Makefile.in (gl-stamp): move-if-change now in build-aux (Bug#9169).
70
b2db44d9 712011-09-06 Paul Eggert <eggert@cs.ucla.edu>
728f8f0a 72
f4af5137 73 * fileio.c: Fix bugs with large file offsets (Bug#9428).
728f8f0a
PE
74 The previous code assumed that file offsets (off_t values) fit in
75 EMACS_INT variables, which is not true on typical 32-bit hosts.
76 The code messed up by falsely reporting buffer overflow in cases
77 such as (insert-file-contents "big" nil 1 2) into an empty buffer
78 when "big" contains more than 2**29 bytes, even though this
79 inserts just one byte and does not overflow the buffer.
80 (Finsert_file_contents): Store file offsets as off_t
81 values, not as EMACS_INT values. Check for overflow when
82 converting between EMACS_INT and off_t. When checking for
83 buffer overflow or for overlap, take the offsets into account.
84 Don't use EMACS_INT for small values where int suffices.
85 When checking for overlap, fix a typo: ZV was used where
86 ZV_BYTE was intended.
87 (Fwrite_region): Don't assume off_t fits into 'long'.
88 * buffer.h (struct buffer.modtime_size): Now off_t, not EMACS_INT.
89
ecfc0a49
MA
902011-09-05 Michael Albinus <michael.albinus@gmx.de>
91
92 * dbusbind.c (xd_signature_cat): Rename from signature_cat.
93
6511acf2 942011-09-04 Paul Eggert <eggert@cs.ucla.edu>
61bfeeb7 95
0999621a 96 sprintf-related integer and memory overflow issues (Bug#9412).
62f19c19
PE
97
98 * doprnt.c (doprnt): Support printing ptrdiff_t and intmax_t values.
8666506e 99 (esprintf, exprintf, evxprintf): New functions.
62f19c19
PE
100 * keyboard.c (command_loop_level): Now EMACS_INT, not int.
101 (cmd_error): kbd macro iterations count is now EMACS_INT, not int.
102 (modify_event_symbol): Do not assume that the length of
103 name_alist_or_stem is safe to alloca and fits in int.
104 (Fexecute_extended_command): Likewise for function name and binding.
105 (Frecursion_depth): Wrap around reliably on integer overflow.
106 * keymap.c (push_key_description): First arg is now EMACS_INT, not int,
107 since some callers pass EMACS_INT values.
108 (Fsingle_key_description): Don't crash if symbol name contains more
109 than MAX_ALLOCA bytes.
110 * minibuf.c (minibuf_level): Now EMACS_INT, not int.
111 (get_minibuffer): Arg is now EMACS_INT, not int.
112 * lisp.h (get_minibuffer, push_key_description): Reflect API changes.
8666506e 113 (esprintf, exprintf, evxprintf): New decls.
62f19c19
PE
114 * window.h (command_loop_level, minibuf_level): Reflect API changes.
115
2be7d702
PE
116 * dbusbind.c (signature_cat): New function.
117 (xd_signature, Fdbus_register_signal):
2ea16b89
PE
118 Do not overrun buffer; instead, report string overflow.
119
9d1df220
PE
120 * dispnew.c (add_window_display_history): Don't overrun buffer.
121 Truncate instead; this is OK since it's just a log.
122
33ef5c64
PE
123 * editfns.c (Fcurrent_time_zone): Don't overrun buffer
124 even if the time zone offset is outlandishly large.
125 Don't mishandle offset == INT_MIN.
126
66c6fdd5
PE
127 * emacs.c (main) [NS_IMPL_COCOA]: Don't overrun buffer
128 when creating daemon; the previous buffer-overflow check was incorrect.
129
d749b01b
PE
130 * eval.c (verror): Simplify by rewriting in terms of evxprintf,
131 which has the guts of the old verror function.
132
b5cd1905
PE
133 * filelock.c (lock_file_1, lock_file): Don't blindly alloca long name;
134 use SAFE_ALLOCA instead. Use esprintf to avoid int-overflow issues.
135
6e1a67fb
PE
136 * font.c: Include <float.h>, for DBL_MAX_10_EXP.
137 (font_unparse_xlfd): Don't blindly alloca long strings.
c21721cc 138 Don't assume XINT result fits in int, or that XFLOAT_DATA * 10
8666506e 139 fits in int, when using sprintf. Use single snprintf to count
c21721cc
PE
140 length of string rather than counting it via multiple sprintfs;
141 that's simpler and more reliable.
c21721cc
PE
142 (font_unparse_fcname): Use it to avoid sprintf buffer overrun.
143 (generate_otf_features) [0 && HAVE_LIBOTF]: Use esprintf, not
144 sprintf, in case result does not fit in int.
145
c57b67fc
PE
146 * fontset.c (num_auto_fontsets): Now printmax_t, not int.
147 (fontset_from_font): Print it.
148
8a401434
PE
149 * frame.c (tty_frame_count): Now printmax_t, not int.
150 (make_terminal_frame, set_term_frame_name): Print it.
151 (x_report_frame_params): In X, window IDs are unsigned long,
152 not signed long, so print them as unsigned.
153 (validate_x_resource_name): Check for implausibly long names,
154 and don't assume name length fits in 'int'.
155 (x_get_resource_string): Don't blindly alloca invocation name;
156 use SAFE_ALLOCA. Use esprintf, not sprintf, in case result does
157 not fit in int.
158
6e1a67fb
PE
159 * gtkutil.c: Include <float.h>, for DBL_MAX_10_EXP.
160 (xg_check_special_colors, xg_set_geometry):
84722b3d
PE
161 Make sprintf buffers a bit bigger, to avoid potential buffer overrun.
162
0df02bf3
PE
163 * lread.c (dir_warning): Don't blindly alloca buffer; use SAFE_ALLOCA.
164 Use esprintf, not sprintf, in case result does not fit in int.
165
48e30793
PE
166 * macros.c (executing_kbd_macro_iterations): Now EMACS_INT, not int.
167 (Fend_kbd_macro): Don't mishandle MOST_NEGATIVE_FIXNUM by treating
168 it as a large positive number.
169 (Fexecute_kbd_macro): Don't assume repeat count fits in int.
170 * macros.h (executing_kbd_macro_iterations): Now EMACS_INT, not int.
171
a66ff6d8
PE
172 * nsterm.m ((NSSize)windowWillResize): Use esprintf, not sprintf,
173 in case result does not fit in int.
174
aca216ff
PE
175 * print.c (float_to_string): Detect width overflow more reliably.
176 (print_object): Make sprintf buffer a bit bigger, to avoid potential
177 buffer overrun. Don't assume list length fits in 'int'. Treat
178 print length of 0 as 0, not as infinity; to be consistent with other
179 uses of print length in this function. Don't overflow print length
180 index. Don't assume hash table size fits in 'long', or that
181 vectorlike size fits in 'unsigned long'.
182
31c286f7
PE
183 * process.c (make_process): Use printmax_t, not int, to format
184 process-name gensyms.
185
55e5faa1
PE
186 * sysdep.c (snprintf) [! HAVE_SNPRINTF]: New function.
187
80f2e268
PE
188 * term.c (produce_glyphless_glyph): Make sprintf buffer a bit bigger
189 to avoid potential buffer overrun.
190
670741ab
PE
191 * xfaces.c (x_update_menu_appearance): Don't overrun buffer
192 if X resource line is longer than 512 bytes.
193
b7163a50
PE
194 * xfns.c (x_window): Make sprintf buffer a bit bigger
195 to avoid potential buffer overrun.
196
ae58ff1f
PE
197 * xterm.c (x_io_error_quitter): Don't overrun sprintf buffer.
198
c43c8a6a
PE
199 * xterm.h (x_check_errors): Add ATTRIBUTE_FORMAT_PRINTF.
200
3f8236f4
PE
2012011-09-04 Paul Eggert <eggert@cs.ucla.edu>
202
53e9fe90 203 Integer overflow fixes for scrolling, etc.
6511acf2
PE
204 Without these, Emacs silently mishandles large integers sometimes.
205 For example, "C-u 4294967297 M-x recenter" was treated as if
53e9fe90
PE
206 it were "C-u 1 M-x recenter" on a typical 64-bit host.
207
6511acf2
PE
208 * xdisp.c (try_window_id): Check Emacs fixnum range before
209 converting to 'int'.
806add1d 210
6511acf2 211 * window.c (window_scroll_line_based, Frecenter):
71f02bc5
PE
212 Check that an Emacs fixnum is in range before assigning it to 'int'.
213 (Frecenter, Fmove_to_window_line): Use EMACS_INT, not int, for
214 values converted from Emacs fixnums.
215 (Frecenter): Don't wrap around a line count if it is out of 'int'
216 range; instead, treat it as an extreme value.
217 (Fset_window_configuration, compare_window_configurations):
218 Use ptrdiff_t, not int, for index that might exceed 2 GiB.
219
6511acf2
PE
220 * search.c (Freplace_match): Use ptrdiff_t, not int, for indexes
221 that can exceed INT_MAX. Check that EMACS_INT value is in range
222 before assigning it to the (possibly-narrower) index.
a0efffc8
PE
223 (match_limit): Don't assume that a fixnum can fit in 'int'.
224
6511acf2 225 * print.c (print_object): Use ptrdiff_t, not int, for index that can
29ebea3b
PE
226 exceed INT_MAX.
227
6511acf2 228 * indent.c (position_indentation): Now takes ptrdiff_t, not int.
3f8236f4
PE
229 (Fvertical_motion): Don't wrap around LINES values that don't fit
230 in 'int'. Instead, treat them as extreme values. This is good
231 enough for windows, which can't have more than INT_MAX lines anyway.
232
fcb901a7
LMI
2332011-09-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
234
0f2f6b6d
LMI
235 * Require libxml/parser.h to avoid compilation warning.
236
fcb901a7
LMI
237 * emacs.c (shut_down_emacs): Call xmlCleanupParser on shutdown.
238
239 * xml.c (parse_region): Don't call xmlCleanupParser after parsing,
240 since this reportedly can destroy thread storage.
241
6e20a0d4
CY
2422011-08-30 Chong Yidong <cyd@stupidchicken.com>
243
244 * syntax.c (find_defun_start): Update all cache variables if
245 exiting early (Bug#9401).
246
148ae00e
EZ
2472011-08-30 Eli Zaretskii <eliz@gnu.org>
248
f6cfbd8f
EZ
249 * image.c (x_bitmap_pixmap): Cast to int to avoid compiler warnings.
250
148ae00e
EZ
251 * xdisp.c (produce_stretch_glyph): No longer static, compiled also
252 when HAVE_WINDOW_SYSTEM is not defined. Support both GUI and TTY
253 frames. Call tty_append_glyph in the TTY case. (Bug#9402)
254
255 * term.c (tty_append_glyph): New function.
256 (produce_stretch_glyph): Static function and its prototype deleted.
257
258 * dispextern.h (produce_stretch_glyph, tty_append_glyph): Add
259 prototypes.
260
c4a07a4c
PE
2612011-08-29 Paul Eggert <eggert@cs.ucla.edu>
262
263 * image.c (parse_image_spec): Check for nonnegative, not for positive,
264 when checking :margin (Bug#9390).
265 (IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR):
266 Renamed from IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,
267 so that the name doesn't mislead. All uses changed.
268
6bc8cd65
JB
2692011-08-28 Johan Bockgård <bojohan@gnu.org>
270
271 * term.c (init_tty) [HAVE_GPM]: Move mouse settings after
272 set_tty_hooks.
273
dca4927e
EZ
2742011-08-27 Eli Zaretskii <eliz@gnu.org>
275
276 * xdisp.c (move_it_to): Don't bail out early when reaching
277 position beyond to_charpos, if we are scanning backwards.
278 (move_it_vertically_backward): When DY == 0, make sure we get to
279 the first character in the line after the newline.
280
f2cad773
PE
2812011-08-27 Paul Eggert <eggert@cs.ucla.edu>
282
283 * ccl.c: Improve and simplify overflow checking (Bug#9196).
284 (ccl_driver): Do not generate an out-of-range pointer.
285 (Fccl_execute_on_string): Remove unnecessary check for
286 integer overflow, noted by Stefan Monnier in
287 <http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00979.html>.
288 Remove a FIXME that didn't need fixing.
289 Simplify the newly-introduced buffer reallocation code.
290
0cae2cdb
JB
2912011-08-27 Juanma Barranquero <lekktu@gmail.com>
292
293 * makefile.w32-in ($(BLD)/alloc.$(O)): Depend on lib/verify.h.
294
5fc295a4 2952011-08-26 Paul Eggert <eggert@cs.ucla.edu>
ddff3151 296
70c60eb2 297 Integer and memory overflow issues (Bug#9196).
726e0ab1 298
d31850da
PE
299 * doc.c (get_doc_string): Rework so that
300 get_doc_string_buffer_size is the actual buffer size, rather than
301 being 1 less than the actual buffer size; this makes xpalloc more
302 convenient.
303
a69fbedb
PE
304 * image.c (x_allocate_bitmap_record, cache_image):
305 * xselect.c (Fx_register_dnd_atom):
306 Simplify previous changes by using xpalloc.
307
fe5c5d37
PE
308 * buffer.c (overlay_str_len): Now ptrdiff_t, not EMACS_INT,
309 since either will do and ptrdiff_t is convenient with xpalloc.
310
0065d054
PE
311 * charset.c (charset_table_size)
312 (struct charset_sort_data.priority): Now ptrdiff_t.
313 (charset_compare): Don't overflow if priorities differ greatly.
314 (Fsort_charsets): Don't assume list length fits in int.
315 Check for size-calculation overflow when allocating sort data.
316 (syms_of_charset): Allocate an initial charset table that is
317 just under 64 KiB, to avoid problems with glibc malloc and mmap.
318
319 * cmds.c (internal_self_insert): Check for size-calculation overflow.
320
321 * composite.h (struct composition.glyph_len): Now int, not unsigned.
322 The actual value is always <= INT_MAX, and leaving it unsigned made
323 overflow checking harder.
324
325 * dispextern.h (struct glyph_matrix.rows_allocated)
326 (struct face_cache.size): Now ptrdiff_t, for convenience in use
327 with xpalloc. The values are still always <= INT_MAX.
328
329 * indent.c (compute_motion): Adjust to region_cache_forward sig change.
330
331 * lisp.h (xnmalloc, xnrealloc, xpalloc): New decls.
332 (SAFE_NALLOCA): New macro.
333
334 * region-cache.c (struct boundary.pos, find_cache_boundary)
335 (move_cache_gap, insert_cache_boundary, delete_cache_boundaries)
336 (set_cache_region, invalidate_region_cache)
337 (revalidate_region_cache, know_region_cache, region_cache_forward)
338 (region_cache_backward, pp_cache):
339 Use ptrdiff_t, not EMACS_INT, since either will do. This is needed
340 so that ptrdiff_t * can be passed to xpalloc.
341 (struct region_cache): Similarly, for gap_start, gap_len, cache_len,
342 beg_unchanged, end_unchanged, buffer_beg, buffer_end members.
343 (pp_cache): Don't assume cache_len fits in int.
344 * region-cache.h: Adjust extern decls to match.
345
346 * search.c (scan_buffer, Freplace_match): Use ptrdiff_t, not
347 EMACS_INT, since either will do, for xpalloc.
348
349 * alloc.c: Include verify.h, and check that int fits in ptrdiff_t.
350 (xnmalloc, xnrealloc, xpalloc): New functions.
351
726e0ab1
PE
352 * bidi.c (bidi_shelve_header_size): New constant.
353 (bidi_cache_ensure_space, bidi_shelve_cache): Use it.
354 (bidi_cache_ensure_space): Avoid integer overflow when allocating.
355
51f30bc5 356 * bidi.c (bidi_cache_shrink):
726e0ab1
PE
357 * buffer.c (overlays_at, overlays_in, record_overlay_string)
358 (overlay_strings):
359 Don't update size of array until after memory allocation succeeds,
360 because xmalloc/xrealloc may not return.
0065d054
PE
361 (struct sortstrlist.bytes): Now ptrdiff_t, as EMACS_INT doesn't help
362 now that we have proper integer overflow checking.
363 (record_overlay_string, overlay_strings): Catch overflows when
364 calculating size of overlay_str_buf.
726e0ab1 365
0065d054
PE
366 * callproc.c (Fcall_process): Check for size overflow when
367 calculating size of args2.
368 (child_setup): Avoid overflow by using size_t rather than ptrdiff_t.
369 Normally we prefer signed values, but sticking with ptrdiff_t would
370 require adding more-complicated checks.
726e0ab1
PE
371
372 * ccl.c (Fccl_execute_on_string): Check for memory overflow.
373 Use ptrdiff_t rather than EMACS_INT where ptrdiff_t will do.
374 Redo buffer-overflow calculations to avoid integer overflow.
0065d054 375 Add a FIXME comment where memory seems to be over-allocated.
726e0ab1
PE
376
377 * character.c (Fstring): Check for size-calculation overflow.
378
379 * coding.c (produce_chars): Redo buffer-overflow calculations to avoid
380 unnecessary integer overflow. Check for size overflow.
381 (encode_coding_object): Don't update size until xmalloc succeeds.
382
383 * composite.c (get_composition_id): Check for overflow in glyph
384 length calculations.
385
386 Integer and memory overflow fixes for display code.
387 * dispextern.h (struct glyph_pool.nglyphs): Now ptrdiff_t, not int.
388 * dispnew.c (adjust_glyph_matrix, realloc_glyph_pool)
389 (scrolling_window): Check for overflow in size calculations.
390 (line_draw_cost, realloc_glyph_pool, add_row_entry):
391 Don't assume glyph table len fits in int.
392 (struct row_entry.bucket, row_entry_pool_size, row_entry_idx)
393 (row_table_size): Now ptrdiff_t, not int.
394 (scrolling_window): Avoid overflow in size calculations.
395 Don't update size until allocation succeeds.
396 * fns.c (concat): Check for overflow in size calculations.
397 (next_almost_prime): Verify NEXT_ALMOST_PRIME_LIMIT.
398 * lisp.h (RANGED_INTEGERP, TYPE_RANGED_INTEGERP): New macros.
399 (NEXT_ALMOST_PRIME_LIMIT): New constant.
400
401 * doc.c (get_doc_string_buffer_size): Now ptrdiff_t, not int.
402 (get_doc_string): Check for size calculation overflow.
403 Don't update size until allocation succeeds.
404 (get_doc_string, Fsubstitute_command_keys): Use ptrdiff_t, not
405 EMACS_INT, where ptrdiff_t will do.
406 (Fsubstitute_command_keys): Check for string overflow.
407
408 * editfns.c (set_time_zone_rule): Don't assume environment length
409 fits in int.
410 (message_length): Now ptrdiff_t, not int.
411 (Fmessage_box): Don't update size until allocation succeeds.
412 Don't assume message length fits in int.
413 (Fformat): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t will do.
414
0065d054
PE
415 * emacs.c (main): Do not reallocate argv, since there is a null at
416 the end that can be overwritten, and this way there's no need to
417 worry about size-calculation overflow.
418 (sort_args): Check for size-calculation overflow.
726e0ab1
PE
419
420 * eval.c (init_eval_once, grow_specpdl): Don't update size until
421 alloc succeeds.
422 (call_debugger, grow_specpdl): Redo calculations to avoid overflow.
423
424 * frame.c (set_menu_bar_lines, x_set_frame_parameters)
425 (x_set_scroll_bar_width, x_figure_window_size):
426 Check for integer overflow.
427 (x_set_alpha): Do not assume XINT fits in int.
428
429 * frame.h (struct frame): Use int, not EMACS_INT, where int works.
430 This is for the members text_lines, text_cols, total_lines, total_cols,
431 where the system imposes an 'int' limit.
432
433 * fringe.c (Fdefine_fringe_bitmap):
434 Don't update size until alloc works.
435
436 * ftfont.c (ftfont_get_open_type_spec, setup_otf_gstring)
437 (ftfont_shape_by_flt): Check for integer overflow in size calculations.
438
439 * gtkutil.c (get_utf8_string, xg_store_widget_in_map):
440 Check for size-calculation overflow.
441 (get_utf8_string): Use ptrdiff_t, not size_t, where either will
442 do, as we prefer signed integers.
443 (id_to_widget.max_size, id_to_widget.used)
444 (xg_store_widget_in_map, xg_remove_widget_from_map)
445 (xg_get_widget_from_map, xg_get_scroll_id_for_window)
446 (xg_remove_scroll_bar, xg_update_scrollbar_pos):
447 Use and return ptrdiff_t, not int.
448 (xg_gtk_scroll_destroy): Don't assume ptrdiff_t fits in int.
449 * gtkutil.h: Change prototypes to match the above.
450
451 * image.c (RANGED_INTEGERP, TYPE_RANGED_INTEGERP): Remove; these
452 are duplicate now that they've been promoted to lisp.h.
453 (x_allocate_bitmap_record, x_alloc_image_color)
454 (make_image_cache, cache_image, xpm_load):
455 Don't update size until alloc is done.
456 (xpm_load, lookup_rgb_color, lookup_pixel_color, x_to_xcolors)
457 (x_detect_edges):
3256efce 458 Check for size calculation overflow.
726e0ab1
PE
459 (ct_colors_allocated_max): New constant.
460 (x_to_xcolors, x_detect_edges): Reorder multiplicands to avoid
461 overflow.
3256efce 462
726e0ab1
PE
463 * keyboard.c (read_char, menu_bar_items, tool_bar_items)
464 (read_char_x_menu_prompt, read_char_minibuf_menu_width)
465 (read_char_minibuf_menu_prompt, follow_key, read_key_sequence):
466 Use ptrdiff_t, not int, to count maps.
467 (read_char_minibuf_menu_prompt): Check for overflow in size
468 calculations. Don't update size until allocation succeeds. Redo
469 calculations to avoid overflow.
470 * keyboard.h: Change prototypes to match the above.
471
472 * keymap.c (cmm_size, current_minor_maps): Use ptrdiff_t, not int,
473 to count maps.
474 (current_minor_maps): Check for size calculation overflow.
475 * keymap.h: Change prototypes to match the above.
476
477 * lread.c (read1, init_obarray): Don't update size until alloc done.
478
479 * macros.c (Fstart_kbd_macro): Don't update size until alloc done.
480 (store_kbd_macro_char): Reorder multiplicands to avoid overflow.
481
726e0ab1
PE
482 * nsterm.h (struct ns_color_table.size, struct ns_color_table.avail):
483 Now ptrdiff_t, not int.
484 * nsterm.m (ns_index_color): Use ptrdiff_t, not int, for table indexes.
485 (ns_draw_fringe_bitmap): Rewrite to avoid overflow.
486
487 * process.c (Fnetwork_interface_list): Check for overflow
488 in size calculation.
489
490 * region-cache.c (move_cache_gap): Check for size calculation overflow.
491
492 * scroll.c (do_line_insertion_deletion_costs): Check for size calc
493 overflow. Don't bother calling xmalloc when xrealloc will do.
494
495 * search.c (Freplace_match): Check for size calculation overflow.
496 (Fset_match_data): Don't assume list lengths fit in 'int'.
497
498 * sysdep.c (system_process_attributes): Use ptrdiff_t, not int,
499 for command line length. Do not attempt to address one before the
500 beginning of an array, as that's not portable.
501
502 * term.c (max_frame_lines): Remove; unused.
503 (encode_terminal_src_size, encode_terminal_dst_size): Now ptrdiff_t,
504 not int.
505 (encode_terminal_code, calculate_costs): Check for size
506 calculation overflow.
507 (encode_terminal_code): Use ptrdiff_t, not int, to record glyph
508 table lengths and related sizes. Don't update size until alloc
509 done. Redo calculations to avoid overflow.
510 (calculate_costs): Don't bother calling xmalloc when xrealloc will do.
511
512 * termcap.c (tgetent): Use ptrdiff_t, not int, to record results of
513 subtracting pointers.
514 (gobble_line): Check for overflow more carefully. Don't update size
515 until alloc done.
516
517 * tparam.c (tparam1): Use ptrdiff_t, not int, for sizes.
518 Don't update size until alloc done.
519 Redo size calculations to avoid overflow.
520 Check for size calculation overflow.
0065d054 521 (main) [DEBUG]: Fix typo in invoking tparam1.
726e0ab1
PE
522
523 * xdisp.c (store_mode_line_noprop_char, x_consider_frame_title):
524 Use ptrdiff_t, not int, for sizes.
525 (store_mode_line_noprop_char): Don't update size until alloc done.
526
0065d054
PE
527 * xfaces.c (lface_id_to_name_size, Finternal_make_lisp_face):
528 Use ptrdiff_t, not int, for sizes.
529 (Finternal_make_lisp_face, cache_face):
530 Check for size calculation overflow.
531 (cache_face): Treat size calculation overflows as if they were
532 memory exhaustion (the usual treatment), rather than aborting.
726e0ab1
PE
533
534 * xfns.c (x_encode_text, x_set_name_internal)
535 (Fx_change_window_property): Use ptrdiff_t, not int, to count
536 sizes, since they can exceed INT_MAX in size. Check for size
537 calculation overflow.
538
0065d054
PE
539 * xgselect.c (gfds_size): Now ptrdiff_t, for convenience with xpalloc.
540 (xg_select): Check for size calculation overflow.
726e0ab1
PE
541 Don't update size until alloc done.
542
0065d054 543 * xrdb.c (get_environ_db): Don't assume path length fits in int,
726e0ab1 544 as sprintf is limited to int lengths.
1d526e2f 545
252c5ee1
PE
546 * xselect.c (X_LONG_SIZE, X_SHRT_MAX, X_SHRT_MIN, X_LONG_MAX)
547 (X_LONG_MIN): New macros.
864d7ce7
PE
548 Use them to make the following changes clearer.
549 (MAX_SELECTION_QUANTUM): Make the other bounds on this value clearer.
550 This change doesn't affect the value now, but it may help remind
551 future maintainers not to raise the value too much later.
552 (SELECTION_QUANTUM): Remove, replacing with ...
553 (selection_quantum): ... new function, which avoids overflow.
554 All uses changed.
555 (struct selection_data.size): Now ptrdiff_t, not int, to avoid
556 assumption that selection length fits in 'int'.
557 (x_reply_selection_request, x_handle_selection_request)
558 (x_get_window_property, receive_incremental_selection)
559 (x_get_window_property_as_lisp_data, selection_data_to_lisp_data)
560 (lisp_data_to_selection_data, clean_local_selection_data):
561 Use ptrdiff_t, not int, to record length of selection.
562 (x_reply_selection_request, x_get_window_property)
563 (receive_incremental_selection, x_property_data_to_lisp):
564 Redo calculations to avoid overflow.
565 (x_reply_selection_request): When sending hint, ceiling it at
252c5ee1 566 X_LONG_MAX rather than relying on wraparound overflow to send
864d7ce7
PE
567 something.
568 (x_get_window_property, receive_incremental_selection)
569 (lisp_data_to_selection_data, x_property_data_to_lisp):
570 Check for size-calculation overflow.
571 (x_get_window_property, receive_incremental_selection)
572 (lisp_data_to_selection_data, Fx_register_dnd_atom):
573 Don't store size until memory allocation succeeds.
574 (x_get_window_property): Plug memory leak on memory exhaustion.
575 Don't double-block input; malloc is safe here. Don't assume 2**34
576 - 4 fits in unsigned long. Add an xassert to check
577 XGetWindowProperty overflow. Be more careful about overflow
578 calculations, and distinguish size from memory overflow better.
579 (receive_incremental_selection): When tracing, don't assume
580 unsigned int is less than INT_MAX.
581 (x_selection_data_to_lisp_data): Remove unnecessary (and in theory
582 harmful) conversions of unsigned short to int.
583 (lisp_data_to_selection_data): Don't assume that integers
584 in the range -65535 through -1 fit in an X unsigned short.
585 Don't assume that ULONG_MAX == X_ULONG_MAX. Don't store into
586 result parameters unless successful. Rely on cons_to_unsigned
587 to report problems with elements; the old code wasn't right anyway.
588 (x_check_property_data): Check for int overflow; we cannot use
589 a wider type due to X limits.
590 (x_handle_dnd_message): Use unsigned int, to avoid int overflow.
591
726e0ab1 592 * xsmfns.c (smc_save_yourself_CB): Check for size calc overflow.
34db673b 593
0065d054
PE
594 * xterm.c (x_color_cells, x_send_scrollbar_event, handle_one_xevent)
595 (x_term_init): Check for size calculation overflow.
726e0ab1
PE
596 (x_color_cells): Don't store size until memory allocation succeeds.
597 (handle_one_xevent): Use ptrdiff_t, not int, for byte counts.
0065d054 598 Don't assume alloca size is less than MAX_ALLOCA.
726e0ab1
PE
599 (x_term_init): Don't assume length fits in int (sprintf is limited
600 to int size).
bc18e09d 601
ebfa62c0
PE
602 Use ptrdiff_t for composition IDs.
603 * character.c (lisp_string_width):
604 * composite.c (composition_table_size, n_compositions)
605 (get_composition_id, composition_gstring_from_id):
606 * dispextern.h (struct glyph_string.cmp_id, struct composition_it.id):
607 * xdisp.c (BUILD_COMPOSITE_GLYPH_STRING):
608 * window.c (Frecenter):
609 Use ptrdiff_t, not int, for composition IDs.
610 * composite.c (get_composition_id): Check for integer overflow.
611 * composite.h: Adjust prototypes to match the above changes.
612
d3411f89
PE
613 Use ptrdiff_t for hash table indexes.
614 * category.c (hash_get_category_set):
615 * ccl.c (ccl_driver):
616 * charset.h (struct charset.hash_index, CHECK_CHARSET_GET_ID):
617 * coding.c (coding_system_charset_list, detect_coding_system):
618 * coding.h (struct coding_system.id):
619 * composite.c (get_composition_id, gstring_lookup_cache):
620 * fns.c (hash_lookup, hash_put, Fgethash, Fputhash):
621 * image.c (xpm_get_color_table_h):
622 * lisp.h (hash_lookup, hash_put):
623 * minibuf.c (Ftest_completion):
624 Use ptrdiff_t for hash table indexes, not int (which is too
625 narrow, on 64-bit hosts) or EMACS_INT (which is too wide, on
626 32-bit --with-wide-int hosts).
627
e097a6fa
PE
628 * charset.c (Fdefine_charset_internal): Check for integer overflow.
629 Add a FIXME comment about memory leaks.
630 (syms_of_charset): Don't assume xmalloc returns.
631
5637687f
PE
632 Don't assume that stated character widths fit in int.
633 * character.c (Fchar_width, c_string_width, lisp_string_width):
634 * character.h (CHAR_WIDTH):
635 * indent.c (MULTIBYTE_BYTES_WIDTH):
636 Use sanitize_char_width to avoid undefined and/or bad behavior
637 with outlandish widths.
638 * character.h (sanitize_tab_width): Renamed from sanitize_width,
639 now that we have two such functions. All uses changed.
640 (sanitize_char_width): New inline function.
641
a2271ba2
PE
642 Don't assume that tab-width fits in int.
643 * character.h (sanitize_width): New inline function.
644 (SANE_TAB_WIDTH): New macro.
645 (ASCII_CHAR_WIDTH): Use it.
646 * indent.c (sane_tab_width): Remove. All uses replaced by
647 SANE_TAB_WIDTH (current_buffer).
648 * xdisp.c (init_iterator): Use SANE_TAB_WIDTH.
649
18c52557
PE
650 * fileio.c: Integer overflow issues with file modes.
651 (Fset_file_modes, auto_save_1): Don't assume EMACS_INT fits in int.
652
caeeedc1
PE
653 * charset.c (read_hex): New arg OVERFLOW. All uses changed.
654 Remove unreachable code.
655 (read_hex, load_charset_map_from_file): Check for integer overflow.
656
50849c52
PE
657 * xterm.c: don't go over XClientMessageEvent limit
658 (scroll_bar_windows_size): Now ptrdiff_t, as we prefer signed.
659 (x_send_scroll_bar_event): Likewise. Check that the size does not
660 exceed limits imposed by XClientMessageEvent, as well as the usual
661 ptrdiff_t and size_t limits.
662
b13995db
PE
663 * keyboard.c: Overflow, signedness and related fixes.
664 (make_lispy_movement): Use same integer type in forward decl
665 that is used in the definition.
666 (read_key_sequence, keyremap_step):
667 Change bufsize argument back to int, undoing my 2011-03-30 change.
668 We prefer signed types, and int is wide enough here.
669 (parse_tool_bar_item): Don't assume tool_bar_max_label_size is less
670 than TYPE_MAXIMUM (EMACS_INT) / 2. Don't let the label size grow
671 larger than STRING_BYTES_BOUND. Use ptrdiff_t for Emacs string
672 length, not size_t. Use ptrdiff_t for index, not int.
673 (keyremap_step, read_key_sequence): Redo bufsize check to avoid
674 possibility of integer overflow.
675
13464394
PE
676 Overflow, signedness and related fixes for images.
677
678 * dispextern.h (struct it.stack[0].u.image.image_id)
679 (struct_it.image_id, struct image.id, struct image_cache.size)
680 (struct image_cache.used, struct image_cache.ref_count):
681 * gtkutil.c (update_frame_tool_bar):
682 * image.c (x_reference_bitmap, Fimage_size, Fimage_mask_p)
683 (Fimage_metadata, free_image_cache, clear_image_cache, lookup_image)
684 (cache_image, mark_image_cache, x_kill_gs_process, Flookup_image):
685 * nsmenu.m (update_frame_tool_bar):
686 * xdisp.c (calc_pixel_width_or_height):
687 * xfns.c (image_cache_refcount):
688 Image IDs are now ptrdiff_t, not int, to avoid arbitrary limits
689 on typical 64-bit hosts.
690
691 * image.c (RANGED_INTEGERP, TYPE_RANGED_INTEGERP): New macros.
692 (x_bitmap_pixmap, x_create_x_image_and_pixmap):
693 Omit unnecessary casts to int.
694 (parse_image_spec): Check that integers fall into 'int' range
695 when the callers expect that.
696 (image_ascent): Redo ascent calculation to avoid int overflow.
697 (clear_image_cache): Avoid overflow when sqrt (INT_MAX) < nimages.
698 (lookup_image): Remove unnecessary tests.
699 (xbm_image_p): Locals are now of int, not EMACS_INT,
700 since parse_image_check makes sure they fit into int.
701 (png_load, gif_load, svg_load_image):
702 Prefer int to unsigned where either will do.
703 (tiff_handler): New function, combining the cores of the
704 old tiff_error_handler and tiff_warning_handler. This
705 function is rewritten to use vsnprintf and thereby avoid
706 stack buffer overflows. It uses only the features of vsnprintf
707 that are common to both POSIX and native Microsoft.
708 (tiff_error_handler, tiff_warning_handler): Use it.
709 (tiff_load, gif_load, imagemagick_load_image):
710 Don't assume :index value fits in 'int'.
711 (gif_load): Omit unnecessary cast to double, and avoid double-rounding.
712 (imagemagick_load_image): Check that crop parameters fit into
713 the integer types that MagickCropImage accepts. Don't assume
714 Vimagemagick_render_type has a nonnegative value. Don't assume
715 size_t fits in 'long'.
716 (gs_load): Use printmax_t to print the widest integers possible.
717 Check for integer overflow when computing image height and width.
718
c11821d4
EZ
7192011-08-26 Eli Zaretskii <eliz@gnu.org>
720
721 * xdisp.c (redisplay_window): Don't force window start if point
722 will be invisible in the resulting window. (Bug#9324)
723
0c95fcf7
EZ
7242011-08-25 Eli Zaretskii <eliz@gnu.org>
725
726 * xdisp.c (compute_display_string_pos): Return 2 in DISP_PROP when
727 the display spec is of the form `(space ...)'.
728 (handle_display_spec): Return the value returned by
729 handle_single_display_spec, not just 1 or zero.
730 (handle_single_display_spec): If the display spec is of the form
731 `(space ...)', and specifies display in the text area, return 2
732 rather than 1.
fee65a97 733 (try_cursor_movement): Check for the need to scroll more
e25be792
EZ
734 accurately, and prefer exact match for point under bidi. Don't
735 advance `row' beyond the last row of the window.
0c95fcf7
EZ
736
737 * dispextern.h (struct bidi_it): Rename the disp_prop_p member
738 into disp_prop; all users changed.
739
740 * bidi.c (bidi_fetch_char): If compute_display_string_pos returns
741 DISP_PROP = 2, substitute the u+2029 PARAGRAPH SEPARATOR character
742 for the text covered by the display property.
743
e4ed06f1
CY
7442011-08-25 Chong Yidong <cyd@stupidchicken.com>
745
746 * buffer.c (Fbury_buffer_internal): Rename from Funrecord_buffer.
747 Change return value to nil.
748 (Frecord_buffer): Delete unused function.
749
f67cdd7f
EZ
7502011-08-24 Eli Zaretskii <eliz@gnu.org>
751
5980d4c6
EZ
752 * xdisp.c (Fcurrent_bidi_paragraph_direction): For unibyte
753 buffers, return left-to-right.
8610fe8b
EZ
754 (set_cursor_from_row): Consider candidate row a win if its glyph
755 represents a newline and point is on that newline. Fixes cursor
756 positioning on the newline at EOL of R2L text within L2R
757 paragraph, and vice versa.
758 (try_cursor_movement): Check continued rows, in addition to
759 continuation rows. Fixes unwarranted scroll when point enters a
760 continued line of R2L text within an L2R paragraph, or vice versa.
761 (cursor_row_p): Consider the case of point being equal to
762 MATRIX_ROW_END_CHARPOS. Prevents cursor being stuck when moving
763 from the end of a short line to the beginning of a continued line
764 of R2L text within L2R paragraph.
765 (RECORD_MAX_MIN_POS): For max_pos, use IT_CHARPOS even for
766 composed characters.
5980d4c6 767
f67cdd7f
EZ
768 * bidi.c (bidi_check_type): Use xassert.
769 (bidi_cache_iterator_state): Update the disp_pos and disp_prop_p
770 members.
771
bca633fb
EZ
7722011-08-23 Eli Zaretskii <eliz@gnu.org>
773
774 * bidi.c (bidi_get_type): Abort if we get zero as the bidi type of
775 a character.
776
4a5885a7
CY
7772011-08-23 Chong Yidong <cyd@stupidchicken.com>
778
779 * nsfont.m (ns_otf_to_script): Fix typo.
780
0902a04e
KH
7812011-08-22 Kenichi Handa <handa@m17n.org>
782
783 * chartab.c (Fset_char_table_extra_slot): Do not inhibit setting a
784 extra slot even if the purpose is char-code-property-table.
785
1a2e6670
EZ
7862011-08-23 Eli Zaretskii <eliz@gnu.org>
787
8ddde651
EZ
788 * xdisp.c (redisplay_window): When computing centering_position,
789 account for the height of the header line. (Bug#8874)
790
425cc014
EZ
791 * dispnew.c (buffer_posn_from_coords): Use buf_charpos_to_bytepos
792 instead of CHAR_TO_BYTE. Fixes a crash when a completion
793 candidate is selected by the mouse, and that candidate has a
794 composed character under the mouse.
795
1a2e6670
EZ
796 * xdisp.c (x_produce_glyphs): Set it->nglyphs to 1. Fixes pixel
797 coordinates reported by pos-visible-in-window-p for a composed
798 character in column zero.
799
8b76d6f8
SM
8002011-08-23 Stefan Monnier <monnier@iro.umontreal.ca>
801
802 * cmds.c (Fself_insert_command): Mention post-self-insert-hook.
803
dac347dd
EZ
8042011-08-22 Eli Zaretskii <eliz@gnu.org>
805
806 * xdisp.c (BUFFER_POS_REACHED_P): If this is a composition,
807 consider it a hit if to_charpos is anywhere in the range of the
808 composed buffer positions.
809
e013fb34
CY
8102011-08-22 Chong Yidong <cyd@stupidchicken.com>
811
812 * image.c (gif_load): Don't assume that each subimage has the same
813 dimensions as the base image. Handle disposal method that is
814 "undefined" by the gif spec (Bug#9335).
815
bd1ba3e8
CY
8162011-08-20 Chong Yidong <cyd@stupidchicken.com>
817
818 * eval.c (Fsignal): Handle `debug' symbol in error handler (Bug#9329).
024a2d76 819 (Fcondition_case): Document `debug' symbol in error handler.
bd1ba3e8 820
54a1215b
EZ
8212011-08-19 Eli Zaretskii <eliz@gnu.org>
822
823564e5
EZ
823 * xfaces.c (face_at_buffer_position): Avoid repeated evaluation of
824 face ID by FACE_FROM_ID, and avoid a crash when mouse is moved
825 from an Org mode buffer to a Speedbar frame.
826
54a1215b
EZ
827 * xdisp.c (RECORD_MAX_MIN_POS): If the display element comes from
828 a composition, take its buffer position from IT->cmp_it.charpos.
829 Fixes cursor positioning at the beginning of a line that begins
830 with a composed character.
831
9778ebcc
EZ
8322011-08-18 Eli Zaretskii <eliz@gnu.org>
833
0be6ee06
EZ
834 * bidi.c (bidi_get_type): If bidi_type_table reports zero as the
835 character bidirectional type, use STRONG_L instead. Fixes crashes
836 in a buffer produced by `describe-categories'.
837
9778ebcc
EZ
838 * dispextern.h (struct bidi_it): Move disp_pos and disp_prop_p
839 members before the level stack, so they would be saved and
840 restored when copying iterator state. Fixes incorrect reordering
841 around TABs covered by display properties.
842
156bffbe
AS
8432011-08-18 Andreas Schwab <schwab@linux-m68k.org>
844
845 * process.c (Fnetwork_interface_list): Correctly determine buffer
846 size.
847
72ad093b
CY
8482011-08-17 Chong Yidong <cyd@stupidchicken.com>
849
850 * eval.c (internal_condition_case, internal_condition_case_1)
8b76d6f8
SM
851 (internal_condition_case_2, internal_condition_case_n):
852 Remove unnecessary aborts (Bug#9081).
72ad093b 853
35774242
EZ
8542011-08-17 Eli Zaretskii <eliz@gnu.org>
855
856 * lread.c (Fload) [DOS_NT]: If `openp' returns -2, but the file
857 has no `load' handler, try opening the file locally. (Bug#9311)
858
db76dd85
KB
8592011-08-16 Ken Brown <kbrown@cornell.edu>
860
861 * gmalloc.c: Expand comment.
862
b215eee5
EZ
8632011-08-16 Eli Zaretskii <eliz@gnu.org>
864
865 * xdisp.c (set_cursor_from_row): Don't accept a previous candidate
866 if it fails the cursor_row_p test. Fixes cursor positioning at ZV.
867
a4579d33
KB
8682011-08-16 Ken Brown <kbrown@cornell.edu>
869
870 Fix memory allocation problems in Cygwin build (Bug#9273).
871
872 * unexcw.c ( __malloc_initialized): Declare external variable.
873 (fixup_executable): Force the dumped emacs to reinitialize malloc.
874
8b76d6f8
SM
875 * gmalloc.c [CYGWIN] (bss_sbrk_heapbase, bss_sbrk_heapinfo):
876 New variables.
a4579d33
KB
877 (malloc_initialize_1) [CYGWIN]: Prepare for reinitializing the
878 dumped emacs.
879 (_free_internal_nolock) [CYGWIN]: Ignore requests to free storage
880 in the static heap.
881 [CYGWIN] (special_realloc): New function.
882 (_realloc_internal_nolock) [CYGWIN]: Use the new function on
883 requests to realloc storage in the static heap.
884
3ebec551
PE
8852011-08-15 Paul Eggert <eggert@cs.ucla.edu>
886
887 * bidi.c (bidi_initialize): Remove unused local.
888
9fd8be00
EZ
8892011-08-15 Eli Zaretskii <eliz@gnu.org>
890
474a8465
EZ
891 * biditype.h: File removed.
892
893 * bidimirror.h: File removed.
894
895 * deps.mk (bidi.o): Remove biditype.h and
896 bidimirror.h.
897
898 * makefile.w32-in ($(BLD)/bidi.$(O)): Remove biditype.h and
899 bidimirror.h.
900
901 * dispextern.h: Fix a typo in the comment to bidi_type_t.
902
903 * chartab.c: Improve commentary for the uniprop_table API.
904
32413314
EZ
905 * bidi.c (bidi_paragraph_init): Support zero value of
906 bidi_ignore_explicit_marks_for_paragraph_level.
474a8465
EZ
907 (bidi_initialize): Use uniprop_table instead of including
908 biditype.h and bidimirror.h.
32413314 909
9fd8be00
EZ
910 * xdisp.c (move_it_in_display_line_to): Don't reset pixel
911 coordinates of the iterator when restoring from ppos_it.
912 (Bug#9296)
913
5cf2b69b
KH
9142011-08-14 Kenichi Handa <handa@m17n.org>
915
916 * process.c (create_process): Call setup_process_coding_systems
72ad093b 917 after the pid of the process is set to -1 (Bug#8162).
5cf2b69b 918
daf17d00
EZ
9192011-08-14 Eli Zaretskii <eliz@gnu.org>
920
921 * xdisp.c (move_it_in_display_line_to): Don't invoke
922 IT_RESET_X_ASCENT_DESCENT when iterator position was restored from
923 ppos_it. Fixes vertical cursor motion when line beginning is
924 covered by an image. (Bug#9296)
925
08e3161a
JD
9262011-08-14 Jan Djärv <jan.h.d@swipnet.se>
927
928 * nsterm.h (ns_run_ascript): Declare.
929 (NSAPP_DATA2_RUNASSCRIPT): Define.
930
931 * nsfns.m (as_script, as_result, as_status): New static variables.
932 (ns_run_ascript): New function.
5e617bc2 933 (Fns_do_applescript): Set variables as_*. Make an NSApplicationDefined
08e3161a
JD
934 event with data2 set to NSAPP_DATA2_RUNASSCRIPT, post it and then start
935 the event loop. Get status from as_status (Bug#7276).
936
937 * nsterm.m (sendEvent): If event is NSApplicationDefined and
938 data2 is NSAPP_DATA2_RUNASSCRIPT, call ns_run_ascript and then exit
939 the event loop (Bug#7276).
940
a3720aa2
AS
9412011-08-14 Andreas Schwab <schwab@linux-m68k.org>
942
943 * gnutls.c (QCgnutls_bootprop_priority)
944 (QCgnutls_bootprop_trustfiles, QCgnutls_bootprop_keylist)
945 (QCgnutls_bootprop_crlfiles, QCgnutls_bootprop_callbacks)
946 (QCgnutls_bootprop_loglevel, QCgnutls_bootprop_hostname)
947 (QCgnutls_bootprop_min_prime_bits, QCgnutls_bootprop_verify_flags)
948 (QCgnutls_bootprop_verify_hostname_error)
949 (QCgnutls_bootprop_callbacks_verify): Rename from
950 Qgnutls_bootprop_..., all uses changed.
951
952 * xfaces.c (QCignore_defface): Rename from Qignore_defface, all
953 uses changed.
954
0a0d27fb
PE
9552011-08-14 Paul Eggert <eggert@cs.ucla.edu>
956
19d5c50c
PE
957 * xfaces.c (Qframe_set_background_mode): Now static.
958 * dispextern.h (Qframe_set_background_mode): Remove decl.
959
0a0d27fb
PE
960 * process.c (Fnetwork_interface_info): Declare local only if needed.
961
377538cb
JD
9622011-08-13 Jan Djärv <jan.h.d@swipnet.se>
963
964 * process.c: Include ifaddrs.h and net/if_dl.h if available (Bug#8477).
965 (Fnetwork_interface_list): Allocate in increments of bytes instead
966 of sizeof (struct ifreq). Iterate over ifconf.ifc_req by counting
967 bytes (Bug#8477). Count bytes correctly when ifr_addr is a struct
968 sockaddr.
969 (struct ifflag_def): notrailers is smart on OSX.
970 (Fnetwork_interface_info): Handle case when ifr_flags is negative.
971 Get hardware address with getifaddrs if available.
972
08fff70c
EZ
9732011-08-12 Eli Zaretskii <eliz@gnu.org>
974
975 * xdisp.c (iterate_out_of_display_property): xassert that
976 IT->position is set to within IT->object's boundaries. Break from
977 the loop as soon as EOB is reached; avoids infloops in redisplay
8b76d6f8
SM
978 when IT->position is set up wrongly due to some bug.
979 Set IT->current to match the bidi iterator unconditionally.
08fff70c
EZ
980 (push_display_prop): Allow GET_FROM_STRING as IT->method on
981 entry. Force push_it to save on the stack the current
982 buffer/string position, to be restored by pop_it. Fix flags in
983 the iterator structure wrt the object coming from a display
984 property, as `line-prefix' and `wrap-prefix' are not ``replacing''
985 properties. (Bug#9284)
986
7be1c708 9872011-08-09 Andreas Schwab <schwab@linux-m68k.org>
aac0c6e3 988
7be1c708
CY
989 * fontset.c (fontset_get_font_group): Add proper type checks.
990 (Bug#9172)
aac0c6e3 991
7be1c708 9922011-08-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
aac0c6e3 993
7be1c708
CY
994 * unexmacosx.c (print_load_command_name): Add cases LC_FUNCTION_STARTS
995 and LC_VERSION_MIN_MACOSX.
996 (copy_linkedit_data) [LC_FUNCTION_STARTS]: New function.
997 (dump_it) [LC_FUNCTION_STARTS]: Use it.
aac0c6e3 998
97bb72a6
EZ
9992011-08-08 Eli Zaretskii <eliz@gnu.org>
1000
1001 * xdisp.c (forward_to_next_line_start): Allow to use the
8b76d6f8
SM
1002 no-display-properties-and-no-overlays under bidi display.
1003 Set disp_pos in the bidi iterator to avoid searches for display
757664a4 1004 properties and overlays.
97bb72a6 1005
d5617611
CY
10062011-08-08 Chong Yidong <cyd@stupidchicken.com>
1007
37e11a63
CY
1008 * editfns.c (Fset_time_zone_rule): Document relationship with the
1009 setenv function.
1010
d5617611
CY
1011 * ftfont.c (ftfont_pattern_entity): Copy the extras argument to
1012 the font entity extracted from the cache (Bug#8109).
1013
58872834
CY
10142011-08-07 Chong Yidong <cyd@stupidchicken.com>
1015
1016 * composite.c (autocmp_chars): Don't reset point. That is done by
1017 restore_point_unwind (Bug#5984).
1018
75bfc667
JL
10192011-08-07 Juri Linkov <juri@jurta.org>
1020
1021 * editfns.c (Fformat_time_string): Doc fix, add tag `usage:'
1022 to show the arg `TIME' instead of `TIMEVAL'.
1023
d1410150
EZ
10242011-08-06 Eli Zaretskii <eliz@gnu.org>
1025
1026 * xdisp.c (set_cursor_from_row): Fix cursor positioning when a
1027 display property strides EOL and includes a newline, as in
1028 longlines-mode. (Bug#9254)
75b771e4
EZ
1029 (move_it_in_display_line_to): Fix vertical-motion in a buffer with
1030 word-wrap under bidirectional display. (Bug#9224)
d1410150
EZ
1031
1032 * bidi.c (bidi_unshelve_cache): Don't reset the cache if JUST_FREE
1033 is non-zero, even if the data buffer is NULL. Fixes a crash in
1034 vertical-motion with longlines-mode. (Bug#9254)
1035
35928349
EZ
10362011-08-05 Eli Zaretskii <eliz@gnu.org>
1037
ec7cc85b
EZ
1038 * bidi.c <bidi_cache_total_alloc>: Now static.
1039 (bidi_initialize): Initialize bidi_cache_total_alloc.
1040
8b76d6f8 1041 * xdisp.c (display_line): Release buffer allocated for shelved bidi
35928349
EZ
1042 cache. (Bug#9221)
1043
1044 * bidi.c (bidi_shelve_cache, bidi_unshelve_cache): Track total
1045 amount allocated this far in `bidi_cache_total_alloc'.
1046 (bidi_unshelve_cache): Accept an additional argument JUST_FREE; if
1047 non-zero, only free the data buffer without restoring the cache
1048 contents. All callers changed.
1049
1050 * dispextern.h (bidi_unshelve_cache): Update prototype.
1051
1052 * xdisp.c (SAVE_IT, pos_visible_p, move_it_in_display_line_to)
1053 (move_it_in_display_line, move_it_to)
1054 (move_it_vertically_backward, move_it_by_lines): Replace the call
1055 to xfree to an equivalent call to bidi_unshelve_cache.
1056 (move_it_in_display_line_to): Fix logic of returning
412b6358 1057 MOVE_POS_MATCH_OR_ZV in the bidi case. (Bug#9224)
35928349 1058
e2e2423b
EZ
10592011-08-05 Eli Zaretskii <eliz@gnu.org>
1060
1061 * xdisp.c (set_cursor_from_row): Prefer the candidate glyph that
1062 came from a string character with a `cursor' property. (Bug#9229)
1063
ae9e757a
JD
10642011-08-04 Jan Djärv <jan.h.d@swipnet.se>
1065
1066 * Makefile.in (LIB_PTHREAD): New variable.
1067 (LIBES): Add LIB_PTHREAD (Bug#9216).
1068
1069 * alloc.c, emacs.c, gmalloc.c, gtkutil.c, keyboard.c, syssignal.h:
1070 Rename HAVE_GTK_AND_PTHREAD to HAVE_PTHREAD (Bug#9216).
1071
213bd7f2
AS
10722011-08-04 Andreas Schwab <schwab@linux-m68k.org>
1073
1074 * regex.c (re_iswctype): Remove some redundant boolean
1075 conversions.
1076
99aaf75f
JD
10772011-08-04 Jan Djärv <jan.h.d@swipnet.se>
1078
1079 * xterm.c (x_find_topmost_parent): New function.
1080 (x_set_frame_alpha): Find topmost parent window with
1081 x_find_topmost_parent and set the property there also (bug#9181).
1082 (handle_one_xevent): Call x_set_frame_alpha on ReparentNotify.
1083
c74e9d86
PE
10842011-08-04 Paul Eggert <eggert@cs.ucla.edu>
1085
1086 * callproc.c (Fcall_process): Avoid vfork clobbering
1087 the local vars buffer, coding_systems, current_dir.
1088
640c8776
SM
10892011-08-03 Stefan Monnier <monnier@iro.umontreal.ca>
1090
1091 * keymap.c (Fmake_composed_keymap): Move to subr.el.
1092
f26d0e4c
PE
10932011-08-03 Paul Eggert <eggert@cs.ucla.edu>
1094
8a10d76c
PE
1095 * fontset.c (dump_fontset) [FONTSET_DEBUG]: Declare EXTERNALLY_VISIBLE
1096 so that it is not optimized away.
1097
f26d0e4c
PE
1098 * xdisp.c (compute_display_string_pos): Remove unused local.
1099
55439c61
EZ
11002011-08-02 Eli Zaretskii <eliz@gnu.org>
1101
1102 Fix slow cursor motion and scrolling in large buffers with
1103 selective display, like Org Mode buffers. (Bug#9218)
1104
1105 * dispextern.h (struct bidi_it): New member disp_prop_p.
1106
1107 * xdisp.c: Remove one-slot cache of display string positions.
1108 (compute_display_string_pos): Accept an additional argument
5e617bc2 1109 DISP_PROP_P; callers changed. Scan at most 5K characters forward
55439c61
EZ
1110 for a display string or property. If found, set DISP_PROP_P
1111 non-zero.
1112
1113 * bidi.c (bidi_fetch_char): Accept an additional argument
640c8776
SM
1114 DISP_PROP_P, and pass it to compute_display_string_pos.
1115 Only handle text covered by a display string if DISP_PROP_P is returned
55439c61
EZ
1116 non-zero. All callers of bidi_fetch_char changed.
1117
fb33fa43
SM
11182011-08-02 Stefan Monnier <monnier@iro.umontreal.ca>
1119
1120 * keymap.c (Fdefine_key): Fix Lisp_Object/int mixup; apply some CSE.
1121
b099e063
DM
11222010-12-03 Don March <don@ohspite.net>
1123
1124 * keymap.c (Fdefine_key): Fix non-prefix key error message when
1125 last character M-[char] is translated to ESC [char] (bug#7541).
1126
5cc7f7af
KH
11272011-08-02 Kenichi Handa <handa@m17n.org>
1128
d0fffa3f 1129 * lisp.h (uniprop_table): Extern it.
5cc7f7af
KH
1130
1131 * chartab.c (uniprop_table): Make it non-static.
1132
525d5e6e
EZ
11332011-08-01 Eli Zaretskii <eliz@gnu.org>
1134
1135 * xdisp.c (forward_to_next_line_start): Accept additional argument
1136 BIDI_IT_PREV, and store into it the state of the bidi iterator had
1137 on the newline.
1138 (reseat_at_next_visible_line_start): Use the bidi iterator state
1139 returned by forward_to_next_line_start to restore the state of
1140 it->bidi_it after backing up to previous newline. (Bug#9212)
1141
31011111
AS
11422011-07-30 Andreas Schwab <schwab@linux-m68k.org>
1143
1144 * regex.c (re_comp): Protoize.
1145 (re_exec): Fix return type.
1146 (regexec): Fix type of `ret'. (Bug#9203)
1147
476371c4
PE
11482011-07-28 Paul Eggert <eggert@cs.ucla.edu>
1149
e5d76069
PE
1150 * image.c (check_image_size): Use 1024x1024 if unknown frame (Bug#9189).
1151 This is needed if max-image-size is a floating-point number.
1152
9a79b20c
AS
11532011-07-28 Andreas Schwab <schwab@linux-m68k.org>
1154
1155 * print.c (print_object): Print empty symbol as ##.
1156
1157 * lread.c (read1): Read ## as empty symbol.
1158
d8c2fa78
AA
11592011-07-28 Alp Aker <alp.tekin.aker@gmail.com>
1160
1161 * nsfns.m (x_set_foreground_color): Set f->foreground_pixel when
1162 setting frame foreground color (Bug#9175).
1163 (x_set_background_color): Likewise.
1164
ffe57a7a
AA
1165 * nsmenu.m (-setText): Size tooltip dimensions precisely to
1166 contents (Bug#9176).
1167 (EmacsTooltip -init): Remove bezels and add shadows to
1168 tooltip windows.
1169
bf3492a5
AA
1170 * nsterm.m (ns_dumpglyphs_stretch): Avoid overwriting left fringe
1171 or scroll bar (Bug#8470).
1172
d55e9c53
AA
1173 * nsfont.m (nsfont_open): Remove assignment to voffset and
1174 unnecessary vars hshink, expand, hd, full_height, min_height.
1175 (nsfont_draw): Use s->ybase as baseline for glyph drawing (Bug#8913).
1176
1177 * nsterm.h (nsfont_info): Remove voffset field.
1178
d8c2fa78 11792011-07-28 Alp Aker <alp.tekin.aker@gmail.com>
4843aac3
AA
1180
1181 Implement strike-through and overline on NextStep (Bug#8863).
1182
1183 * nsfont.m (nsfont_open): Use underline position provided by font,
1184 instead of hard-coded value of 2.
1185 (nsfont_draw): Call ns_draw_text_decoration instead.
1186
1187 * nsterm.h: Add declaration for ns_draw_text_decoration.
1188
1189 * nsterm.m (ns_draw_text_decoration): New function for drawing
1190 underline, overline, and strike-through.
1191 (ns_dumpglyphs_image, ns_dumpglyphs_stretch): Add call to
1192 ns_draw_text_decoration. Change treatment of cursor drawing to
1193 accomodate underlining, etc.
1194
4cc60b9b
EZ
11952011-07-28 Eli Zaretskii <eliz@gnu.org>
1196
bc7ece87
EZ
1197 * buffer.c (init_buffer_once): Set bidi-display-reordering to t by
1198 default.
4cc60b9b 1199
476371c4
PE
12002011-07-28 Paul Eggert <eggert@cs.ucla.edu>
1201
66606eea
PE
1202 * alloc.c (memory_full) [!SYNC_INPUT]: Fix signal-related race.
1203 Without this fix, if a signal arrives just after memory fills up,
1204 'malloc' might be invoked reentrantly.
1205
476371c4
PE
1206 * image.c (x_check_image_size) [!HAVE_X_WINDOWS]: Return 1.
1207 In other words, assume that every image size is allowed, on non-X
1208 hosts. This assumption is probably wrong, but it lets Emacs compile.
1209
f3fcc40d
AS
12102011-07-28 Andreas Schwab <schwab@linux-m68k.org>
1211
1212 * regex.c (re_iswctype): Convert return values to boolean.
1213
350c992f
EZ
12142011-07-28 Eli Zaretskii <eliz@fencepost.gnu.org>
1215
1216 * xdisp.c (compute_display_string_pos): Don't use cached display
1217 string position if the buffer had its restriction changed.
1218 (Bug#9184)
1219
5266b4bb
PE
12202011-07-28 Paul Eggert <eggert@cs.ucla.edu>
1221
1222 * callproc.c (Fcall_process): Use 'volatile' to avoid vfork clobbering.
1223
2573a837 12242011-07-28 Paul Eggert <eggert@cs.ucla.edu>
ca4aa935 1225
41f55ccd 1226 Integer signedness and overflow and related fixes. (Bug#9079)
cf950e6b 1227
39e378da
PE
1228 * bidi.c: Integer size and overflow fixes.
1229 (bidi_cache_size, bidi_cache_idx, bidi_cache_last_idx)
1230 (bidi_cache_start, bidi_cache_fetch_state, bidi_cache_search)
1231 (bidi_cache_find_level_change, bidi_cache_ensure_space)
1232 (bidi_cache_iterator_state, bidi_cache_find, bidi_cache_start_stack)
1233 (bidi_find_other_level_edge):
1234 Use ptrdiff_t instead of EMACS_INT where either will do.
1235 This works better on 32-bit hosts configured --with-wide-int.
1236 (bidi_cache_ensure_space): Check for size-calculation overflow.
1237 Use % rather than repeated addition, for better worst-case speed.
1238 Don't set bidi_cache_size until after xrealloc returns, because it
1239 might not return.
1240 (bidi_dump_cached_states): Use ptrdiff_t, not int, to avoid overflow.
f0eb61e9
PE
1241 (bidi_cache_ensure_space): Also check that the bidi cache size
1242 does not exceed that of the largest Lisp string or buffer. See Eli
1243 Zaretskii in <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9079#29>.
39e378da 1244
5e927815
PE
1245 * alloc.c (__malloc_size_t): Remove.
1246 All uses replaced by size_t. See Andreas Schwab's note
1247 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9079#8>.
1248
ca4aa935
PE
1249 * image.c: Improve checking for integer overflow.
1250 (check_image_size): Assume that f is nonnull, since
1251 it is always nonnull in practice. This is one less thing to
1252 worry about when checking for integer overflow later.
1253 (x_check_image_size): New function, which checks for integer
1254 overflow issues inside X.
1255 (x_create_x_image_and_pixmap, xbm_read_bitmap_data): Use it.
1256 This removes the need for a memory_full check.
1257 (xbm_image_p): Rewrite to avoid integer multiplication overflow.
1258 (Create_Pixmap_From_Bitmap_Data, xbm_load): Use x_check_image_size.
1259 (xbm_read_bitmap_data): Change locals back to 'int', since
1260 their values must fit in 'int'.
1261 (xpm_load_image, png_load, tiff_load):
1262 Invoke x_create_x_image_and_pixmap earlier,
1263 to avoid much needless work if the image is too large.
1264 (tiff_load): Treat overly large images as if
1265 x_create_x_image_and_pixmap failed, not as malloc failures.
1266 (gs_load): Use x_check_image_size.
1267
5f8f9cc2
PE
1268 * gtkutil.c: Omit integer casts.
1269 (xg_get_pixbuf_from_pixmap): Remove unnecessary cast.
1270 (xg_set_toolkit_scroll_bar_thumb): Rewrite to avoid need for cast.
1271
5adf60bc
PE
1272 * image.c (png_load): Don't assume height * row_bytes fits in 'int'.
1273
c8907a93
PE
1274 * xfaces.c (Fbitmap_spec_p): Fix integer overflow bug.
1275 Without this fix, (bitmap-spec-p '(34359738368 1 "x"))
1276 would wrongly return t on a 64-bit host.
1277
e3c25c68
PE
1278 * dispnew.c (init_display): Use *_RANGE_OVERFLOW macros.
1279 The plain *_OVERFLOW macros run afoul of GCC bug 49705
1280 <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49705>
1281 and therefore cause GCC to emit a bogus diagnostic in some cases.
1282
3f791afe
PE
1283 * image.c: Integer signedness and overflow and related fixes.
1284 This is not an exhaustive set of fixes, but it's time to
1285 record what I've got.
1286 (lookup_pixel_color, check_image_size): Remove redundant decls.
1287 (check_image_size): Don't assume that arbitrary EMACS_INT values
1288 fit in 'int', or that arbitrary 'double' values fit in 'int'.
1289 (x_alloc_image_color, x_create_x_image_and_pixmap, png_load)
1290 (tiff_load, imagemagick_load_image):
1291 Check for overflow in size calculations.
1292 (x_create_x_image_and_pixmap): Remove unnecessary test for
1293 xmalloc returning NULL; that can't happen.
1294 (xbm_read_bitmap_data): Don't assume sizes fit into 'int'.
1295 (xpm_color_bucket): Use better integer hashing function.
1296 (xpm_cache_color): Don't possibly over-allocate memory.
1297 (struct png_memory_storage, tiff_memory_source, tiff_seek_in_memory)
1298 (gif_memory_source):
1299 Use ptrdiff_t, not int or size_t, to record sizes.
1300 (png_load): Don't assume values greater than 2**31 fit in 'int'.
1301 (our_stdio_fill_input_buffer): Prefer ptrdiff_t to size_t when
1302 either works, as we prefer signed integers.
1303 (tiff_read_from_memory, tiff_write_from_memory):
1304 Return tsize_t, not size_t, since that's what the TIFF API wants.
1305 (tiff_read_from_memory): Don't fail simply because the read would
1306 go past EOF; instead, return a short read.
1307 (tiff_load): Omit no-longer-needed casts.
1308 (Fimagemagick_types): Don't assume size fits into 'int'.
1309
3cc5a532
PE
1310 Improve hashing quality when configured --with-wide-int.
1311 * fns.c (hash_string): New function, taken from sxhash_string.
1312 Do not discard information about ASCII character case; this
1313 discarding is no longer needed.
1314 (sxhash-string): Use it. Change sig to match it. Caller changed.
1315 * lisp.h: Declare it.
1316 * lread.c (hash_string): Remove, since we now use fns.c's version.
1317 The fns.c version returns a wider integer if --with-wide-int is
1318 specified, so this should help the quality of the hashing a bit.
1319
b312a492
PE
1320 * emacs.c: Integer overflow minor fix.
1321 (heap_bss_diff): Now uprintmax_t, not unsigned long. All used changed.
1322 Define only if GNU_LINUX.
1323 (main, Fdump_emacs): Set and use heap_bss_diff only if GNU_LINUX.
1324
dfd153ae
PE
1325 * dispnew.c: Integer signedness and overflow fixes.
1326 Remove unnecessary forward decls, that were a maintenance hassle.
1327 (history_tick): Now uprintmax_t, so it's more likely to avoid overflow.
1328 All uses changed.
1329 (adjust_glyph_matrix, realloc_glyph_pool, adjust_frame_message_buffer)
1330 (scrolling_window): Use ptrdiff_t, not int, for byte count.
1331 (prepare_desired_row, line_draw_cost):
1332 Use int, not unsigned, where either works.
1333 (save_current_matrix, restore_current_matrix):
1334 Use ptrdiff_t, not size_t, where either works.
1335 (init_display): Check for overflow more accurately, and without
1336 relying on undefined behavior.
1337
a81d11a3
PE
1338 * editfns.c (pWIDE, pWIDElen, signed_wide, unsigned_wide):
1339 Remove, replacing with the new symbols in lisp.h. All uses changed.
1340 * fileio.c (make_temp_name):
1341 * filelock.c (lock_file_1, lock_file):
1342 * xdisp.c (message_dolog):
1343 Don't assume PRIdMAX etc. works; this isn't portable to pre-C99 hosts.
1344 Use pMd etc. instead.
1345 * lisp.h (printmax_t, uprintmax_t, pMd, pMu): New types and macros,
1346 replacing the pWIDE etc. symbols removed from editfns.c.
1347
3300e6fd
PE
1348 * keyboard.h (num_input_events): Now uintmax_t.
1349 This is (very slightly) less likely to mess up due to wraparound.
1350 All uses changed.
1351
fd05c7e9
PE
1352 * buffer.c: Integer signedness fixes.
1353 (alloc_buffer_text, enlarge_buffer_text):
1354 Use ptrdiff_t rather than size_t when either will do, as we prefer
1355 signed integers.
1356
903fe15d
PE
1357 * alloc.c: Integer signedness and overflow fixes.
1358 Do not impose an arbitrary 32-bit limit on malloc sizes when debugging.
1359 (__malloc_size_t): Default to size_t, not to int.
1360 (pure_size, pure_bytes_used_before_overflow, stack_copy_size)
1361 (Fgarbage_collect, mark_object_loop_halt, mark_object):
1362 Prefer ptrdiff_t to size_t when either would do, as we prefer
1363 signed integers.
1364 (XMALLOC_OVERRUN_CHECK_OVERHEAD): New macro.
1365 (xmalloc_overrun_check_header, xmalloc_overrun_check_trailer):
1366 Now const. Initialize with values that are in range even if char
1367 is signed.
1368 (XMALLOC_PUT_SIZE, XMALLOC_GET_SIZE): Remove, replacing with ...
1369 (xmalloc_put_size, xmalloc_get_size): New functions. All uses changed.
1370 These functions do the right thing with sizes > 2**32.
1371 (check_depth): Now ptrdiff_t, not int.
1372 (overrun_check_malloc, overrun_check_realloc, overrun_check_free):
1373 Adjust to new way of storing sizes. Check for size overflow bugs
1374 in rest of code.
1375 (STRING_BYTES_MAX): Adjust to new overheads. The old code was
1376 slightly wrong anyway, as it missed one instance of
1377 XMALLOC_OVERRUN_CHECK_OVERHEAD.
1378 (refill_memory_reserve): Omit needless cast to size_t.
1379 (mark_object_loop_halt): Mark as externally visible.
1380
ac82cc6a
PE
1381 * xselect.c: Integer signedness and overflow fixes.
1382 (Fx_register_dnd_atom, x_handle_dnd_message):
1383 Use ptrdiff_t, not size_t, since we prefer signed.
1384 (Fx_register_dnd_atom): Check for ptrdiff_t (and size_t) overflow.
1385 * xterm.h (struct x_display_info): Use ptrdiff_t, not size_t, for
1386 x_dnd_atoms_size and x_dnd_atoms_length.
1387
c2d1e36d
PE
1388 * doprnt.c: Prefer signed to unsigned when either works.
1389 * eval.c (verror):
1390 * doprnt.c (doprnt):
1391 * lisp.h (doprnt):
1392 * xdisp.c (vmessage):
1393 Use ptrdiff_t, not size_t, when using or implementing doprnt,
1394 since the sizes cannot exceed ptrdiff_t bounds anyway, and we
1395 prefer signed arithmetic to avoid comparison confusion.
1396 * doprnt.c (doprnt): Avoid a "+ 1" that can't overflow,
1397 but is a bit tricky.
1398
0e926e56
PE
1399 Assume freestanding C89 headers, string.h, stdlib.h.
1400 * data.c, doprnt.c, floatfns.c, print.c:
1401 Include float.h unconditionally.
1402 * gmalloc.c: Assume C89-at-least behavior for preprocessor,
1403 limits.h, stddef.h, string.h. Use memset instead of 'flood'.
1404 * regex.c: Likewise for stddef.h, string.h.
1405 (ISASCII): Remove; can assume it returns 1 now. All uses removed.
1406 * s/aix4-2.h (HAVE_STRING_H): Remove obsolete undef.
1407 * s/ms-w32.h (HAVE_LIMITS_H, HAVE_STRING_H, HAVE_STDLIB_H)
1408 (STDC_HEADERS): Remove obsolete defines.
1409 * sysdep.c: Include limits.h unconditionally.
1410
9cfdb3ec
PE
1411 Assume support for memcmp, memcpy, memmove, memset.
1412 * lisp.h, sysdep.c (memcmp, memcpy, memmove, memset):
1413 * regex.c (memcmp, memcpy):
1414 Remove; we assume C89 now.
1415
1416 * gmalloc.c (memcpy, memset, memmove): Remove; we assume C89 now.
1417 (__malloc_safe_bcopy): Remove; no longer needed.
1418
cf950e6b 1419 * lisp.h (struct vectorlike_header, struct Lisp_Subr): Signed sizes.
6089c567
PE
1420 Use EMACS_INT, not EMACS_UINT, for sizes. The code works equally
1421 well either way, and we prefer signed to unsigned.
1422
dbf38e02
LMI
14232011-07-27 Lars Magne Ingebrigtsen <larsi@gnus.org>
1424
1425 * gnutls.c (emacs_gnutls_read): Don't message anything if the peer
1426 closes the connection while we're reading (bug#9182).
1427
d6f0886c 14282011-07-25 Jan Djärv <jan.h.d@swipnet.se>
24e0f6b1 1429
d6f0886c
JD
1430 * nsmenu.m (ns_popup_dialog): Add an "ok" button if no buttons
1431 are specified (Bug#9168).
24e0f6b1 1432
2eb1f9e6
PE
14332011-07-25 Paul Eggert <eggert@cs.ucla.edu>
1434
1435 * bidi.c (bidi_dump_cached_states): Fix printf format mismatch.
1436 Found by GCC static checking and --with-wide-int on a 32-bit host.
1437
22381272 14382011-07-25 Eli Zaretskii <eliz@gnu.org>
7daee910
EZ
1439
1440 * xdisp.c (compute_display_string_pos): Fix logic of caching
1441 previous display string position. Initialize cached_prev_pos to
1442 -1. Fixes slow-down at the beginning of a buffer.
1443
f25e39b4
EZ
14442011-07-24 Eli Zaretskii <eliz@gnu.org>
1445
1446 * xfaces.c (check_lface_attrs) [HAVE_WINDOW_SYSTEM]: Allow `nil'
1447 for attrs[LFACE_FONTSET_INDEX].
1448
04c4b52e
PE
14492011-07-23 Paul Eggert <eggert@cs.ucla.edu>
1450
1451 * xml.c (parse_region): Remove unused local
1452 that was recently introduced.
1453
c1734fbd
EZ
14542011-07-23 Eli Zaretskii <eliz@gnu.org>
1455
be18c5a5
EZ
1456 * xfns.c (unwind_create_frame) [GLYPH_DEBUG]: Adapt to changes in
1457 2008-02-22T17:42:09Z!monnier@iro.umontreal.ca.
1458
c1734fbd
EZ
1459 * xdisp.c (move_it_in_display_line_to): Record the best matching
1460 position for TO_CHARPOS while scanning the line, and restore it on
640c8776
SM
1461 exit if none of the characters scanned was an exact match.
1462 Fixes vertical-motion and pos-visible-in-window-p under bidi redisplay
a9269c18
EZ
1463 when exact match is impossible due to invisible text, and the
1464 lines are truncated.
1465
a258d627
JD
14662011-07-23 Jan Djärv <jan.h.d@swipnet.se>
1467
1468 * nsterm.m (initFrameFromEmacs): Set NSTitledWindowMask in styleMask
1469 for OSX >= 10.7.
1470
b6d5a689
EZ
14712011-07-22 Eli Zaretskii <eliz@gnu.org>
1472
0f74f785
EZ
1473 Fix a significant slow-down of cursor motion with C-n, C-p,
1474 C-f/C-b, and C-v/M-v that couldn't keep up with keyboard
1475 auto-repeat under bidi redisplay in fontified buffers.
b6d5a689 1476 * xdisp.c (compute_stop_pos_backwards): New function.
b6d5a689
EZ
1477 (next_element_from_buffer): Call compute_stop_pos_backwards to
1478 find a suitable prev_stop when we find ourselves before
0f74f785
EZ
1479 base_level_stop.
1480 (reseat): Don't look for prev_stop, as that could mean a very long
1481 run.
1482 <cached_disp_pos, cached_disp_buffer, cached_disp_modiff>
1483 <cached_disp_overlay_modiff>: Cache for last found display string
1484 position.
551918c1 1485 (compute_display_string_pos): Return the cached position if asked
0f74f785
EZ
1486 about the same buffer in the same area of character positions, and
1487 the buffer wasn't changed since the time the display string
1488 position was cached.
551918c1 1489
b2d0c91a
EZ
14902011-07-22 Eli Zaretskii <eliz@gnu.org>
1491
1492 * xdisp.c (rows_from_pos_range): Don't ignore glyphs whose object
1493 is an integer, which is important for empty lines. (Bug#9149)
1494
043604ee
CY
14952011-07-22 Chong Yidong <cyd@stupidchicken.com>
1496
1497 * frame.c (Fmodify_frame_parameters): In tty case, update the
1498 default face if necessary (Bug#4238).
1499
da4adb04
CY
15002011-07-21 Chong Yidong <cyd@stupidchicken.com>
1501
1502 * editfns.c (Fstring_to_char): No need to explain what a character
1503 is in the docstring (Bug#6576).
1504
9abd0532
LMI
15052011-07-20 Lars Magne Ingebrigtsen <larsi@gnus.org>
1506
1507 * xml.c (parse_region): Make sure we always return a tree.
1508
36881d16
HK
15092011-07-20 HAMANO Kiyoto <khiker.mail@gmail.com>
1510
1511 * xml.c (parse_region): If a document contains only comments,
1512 return that, too.
1513
1e98674d
LMI
15142011-07-20 Lars Magne Ingebrigtsen <larsi@gnus.org>
1515
1516 * xml.c (make_dom): Return comments, too.
1517
590bd467
PE
15182011-07-19 Paul Eggert <eggert@cs.ucla.edu>
1519
1520 Port to OpenBSD.
1521 See http://lists.gnu.org/archive/html/emacs-devel/2011-07/msg00688.html
1522 and the surrounding thread.
1523 * minibuf.c (read_minibuf_noninteractive): Rewrite to use getchar
1524 rather than fgets, and retry after EINTR. Otherwise, 'emacs
1525 --batch -f byte-compile-file' fails on OpenBSD if an inactivity
1526 timer goes off.
1527 * s/openbsd.h (BROKEN_SIGIO): Define.
1528 * unexelf.c (unexec) [__OpenBSD__]:
1529 Don't update the .mdebug section of the Alpha COFF symbol table.
1530
f41628b2
LMI
15312011-07-19 Lars Magne Ingebrigtsen <larsi@gnus.org>
1532
1533 * lread.c (syms_of_lread): Clarify when `lexical-binding' is used
1534 (bug#8460).
1535
b59b67c5
PE
15362011-07-18 Paul Eggert <eggert@cs.ucla.edu>
1537
15e3a074
PE
1538 * fileio.c (Fcopy_file) [!MSDOS]: Tighten created file's mask.
1539 This fixes some race conditions on the permissions of any newly
1540 created file.
1541
41bed37d
PE
1542 * alloc.c (valid_pointer_p): Use pipe, not open.
1543 This fixes some permissions issues when debugging.
1544
b59b67c5
PE
1545 * fileio.c (Fcopy_file): Adjust mode if fchown fails. (Bug#9002)
1546 If fchown fails to set both uid and gid, try to set just gid,
1547 as that is sometimes allowed. Adjust the file's mode to eliminate
1548 setuid or setgid bits that are inappropriate if fchown fails.
1549
925a6be7
SM
15502011-07-18 Stefan Monnier <monnier@iro.umontreal.ca>
1551
1552 * xdisp.c (next_element_from_string, next_element_from_buffer): Use EQ
1553 to compare Lisp_Objects.
1554 * gnutls.c (syms_of_gnutls): Rename Vgnutls_log_level to
1555 global_gnutls_log_level, don't mistake it for a Lisp_Object.
1556 (init_gnutls_functions, emacs_gnutls_handle_error): Fix up uses.
1557
52968808
AS
15582011-07-17 Andreas Schwab <schwab@linux-m68k.org>
1559
0a6a104b
AS
1560 * lread.c (read_integer): Unread even EOF character.
1561 (read1): Likewise. Properly record start position of symbol.
1562
52968808
AS
1563 * lread.c (read1): Read `#:' as empty uninterned symbol if no
1564 symbol character follows.
1565
9e381cdd
PE
15662011-07-17 Paul Eggert <eggert@cs.ucla.edu>
1567
1568 * fileio.c (Fcopy_file): Pacify gcc re fchown. (Bug#9002)
1569 This works around a problem with the previous change to Fcopy_file.
1570 Recent glibc declares fchown with __attribute__((warn_unused_result)),
1571 and without this change, GCC might complain about discarding
1572 fchown's return value.
1573
b5641435
JB
15742011-07-16 Juanma Barranquero <lekktu@gmail.com>
1575
1576 * makefile.w32-in (GLOBAL_SOURCES): Add gnutls.c (followup to bug#9059).
1577
a8031457
PE
15782011-07-16 Paul Eggert <eggert@cs.ucla.edu>
1579
1580 * fileio.c (Fcopy_file): Don't diagnose fchown failures. (Bug#9002)
1581
dd889327
LMI
15822011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org>
1583
750c33f7
LMI
1584 * gnutls.c (syms_of_gnutls): Define `gnutls-log-level' here, since
1585 it's used from the C level.
1586
dd889327
LMI
1587 * process.c: Use the same condition for POLL_FOR_INPUT in both
1588 keyboard.c and process.c (bug#1858).
1589
87e86684
LM
15902011-07-09 Lawrence Mitchell <wence@gmx.li>
1591
1592 * gnutls.c (Qgnutls_bootprop_min_prime_bits): New variable.
1593 (Fgnutls_boot): Use it.
1594
64348f40
AS
15952011-07-15 Andreas Schwab <schwab@linux-m68k.org>
1596
1597 * doc.c (Fsubstitute_command_keys): Revert last change.
1598
1d698799
LMI
15992011-07-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
1600
f863868c
LMI
1601 * doc.c (Fsubstitute_command_keys): Clarify that \= really only
1602 quotes the next character, and doesn't affect other longer
1603 sequences (bug#8935).
1604
1d698799
LMI
1605 * lread.c (syms_of_lread): Clarify that is isn't only
1606 `eval-buffer' and `eval-defun' that's affected by
1607 `lexical-binding' (bug#8460).
1608
aa4b6df6
EZ
16092011-07-15 Eli Zaretskii <eliz@gnu.org>
1610
1611 * xdisp.c (move_it_in_display_line_to): Fix vertical motion with
1612 bidi redisplay when a line includes both an image and is
1613 truncated.
1614
5d856da6
PE
16152011-07-14 Paul Eggert <eggert@cs.ucla.edu>
1616
ad6042bb
PE
1617 Fix minor problems found by static checking.
1618 * bidi.c (bidi_cache_size): Now EMACS_INT, not size_t.
1619 (elsz): Now a signed constant, not a size_t var. We prefer signed
1620 types to unsigned, to avoid integer comparison confusion. Without
1621 this change, GCC 4.6.1 with -Wunsafe-loop-optimizations complains
1622 "cannot optimize loop, the loop counter may overflow", a symptom
1623 of the confusion.
f00bbb22 1624 * indent.c (Fvertical_motion): Mark locals as initialized.
5d856da6
PE
1625 * xdisp.c (reseat_to_string): Fix pointer signedness issue.
1626
6468f31c
LMI
16272011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
1628
49080b10
LMI
1629 * search.c (Fre_search_backward): Mention `case-fold-search' in
1630 all the re_search_* functions (bug#8138).
1631
6468f31c
LMI
1632 * keyboard.c (Fopen_dribble_file): Document when the file is
1633 closed (bug#8056).
1634
c965adc5
EZ
16352011-07-14 Eli Zaretskii <eliz@gnu.org>
1636
df9733bf
EZ
1637 * bidi.c (bidi_dump_cached_states): Fix format of displaying
1638 bidi_cache_idx.
1639
0bb23927
EZ
1640 Support bidi reordering of display and overlay strings.
1641 * xdisp.c (compute_display_string_pos)
1642 (compute_display_string_end): Accept additional argument STRING.
1643 (init_iterator, reseat_1): Initialize bidi_it->string.s to NULL.
1644 (reseat_to_string): Initialize bidi_it->string.s and
1645 bidi_it->string.schars.
1646 (Fcurrent_bidi_paragraph_direction): Initialize itb.string.s to
640c8776
SM
1647 NULL (avoids a crash in bidi_paragraph_init).
1648 Initialize itb.string.lstring.
0bb23927
EZ
1649 (init_iterator): Call bidi_init_it only of a valid
1650 buffer position was specified. Initialize paragraph_embedding to
1651 L2R.
1652 (reseat_to_string): Initialize the bidi iterator.
1653 (display_string): If we need to ignore text properties of
1654 LISP_STRING, set IT->stop_charpos to IT->end_charpos. (The
1655 original value of -1 will not work with bidi.)
1656 (compute_display_string_pos): First arg is now struct
1657 `text_pos *'; all callers changed. Support display properties on
1658 Lisp strings.
1659 (compute_display_string_end): Support display properties on Lisp
1660 strings.
1661 (init_iterator, reseat_1, reseat_to_string): Initialize the
1662 string.bufpos member to 0 (zero, for compatibility with IT_CHARPOS
1663 when iterating on a string not from display properties).
640c8776
SM
1664 (compute_display_string_pos, compute_display_string_end):
1665 Fix calculation of the object to scan. Fixes an error when using
0bb23927
EZ
1666 arrow keys.
1667 (next_element_from_buffer): Don't abort when IT_CHARPOS is before
640c8776
SM
1668 base_level_stop; instead, set base_level_stop to BEGV.
1669 Fixes crashes in vertical-motion.
0bb23927
EZ
1670 (next_element_from_buffer): Improve commentary for when
1671 the iterator is before prev_stop.
1672 (init_iterator): Initialize bidi_p from the default value of
1673 bidi-display-reordering, not from buffer-local value. Use the
1674 buffer-local value only if initializing for buffer iteration.
1675 (handle_invisible_prop): Support invisible properties on strings
1676 that are being bidi-reordered.
1677 (set_iterator_to_next): Support bidi reordering of C strings and
1678 Lisp strings.
1679 (next_element_from_string): Support bidi reordering of Lisp
1680 strings.
1681 (handle_stop_backwards): Support Lisp strings as well.
640c8776
SM
1682 (display_string): Support display of R2L glyph rows.
1683 Use IT_STRING_CHARPOS when displaying from a Lisp string.
0bb23927
EZ
1684 (init_iterator): Don't initialize it->bidi_p for strings
1685 here.
1686 (reseat_to_string): Initialize it->bidi_p for strings here.
1687 (next_element_from_string, next_element_from_c_string)
1688 (next_element_from_buffer): Add xassert's for correspondence
1689 between IT's object being iterated and it->bidi_it.string
1690 structure.
1691 (face_before_or_after_it_pos): Support bidi iteration.
1692 (next_element_from_c_string): Handle the case of the first string
1693 character that is not the first one in the visual order.
1694 (get_visually_first_element): New function, refactored from common
1695 parts of next_element_from_buffer, next_element_from_string, and
1696 next_element_from_c_string.
1697 (tool_bar_lines_needed, redisplay_tool_bar)
1698 (display_menu_bar): Force left-to-right direction. Add a FIXME
1699 comment for making that be controlled by a user option.
1700 (push_it, pop_it): Save and restore the state of the
1701 bidi iterator. Save and restore the bidi_p flag.
1702 (pop_it): Iterate out of display property for string iteration as
1703 well.
1704 (iterate_out_of_display_property): Support iteration over strings.
1705 (handle_single_display_spec): Set up it->bidi_it for iteration
1706 over a display string, and call bidi_init_it.
1707 (handle_single_display_spec, next_overlay_string)
1708 (get_overlay_strings_1, push_display_prop): Set up the bidi
1709 iterator for displaying display or overlay strings.
1710 (forward_to_next_line_start): Don't use the shortcut if
1711 bidi-iterating.
1712 (back_to_previous_visible_line_start): If handle_display_prop
1713 pushed the iterator stack, restore the internal state of the bidi
1714 iterator by calling bidi_pop_it same number of times.
1715 (reseat_at_next_visible_line_start): If ON_NEWLINE_P is non-zero,
1716 and we are bidi-iterating, don't decrement the iterator position;
1717 instead, set the first_elt flag in the bidi iterator, to produce
1718 the same effect.
1719 (reseat_1): Remove redundant setting of string_from_display_prop_p.
1720 (push_display_prop): xassert that we are iterating a buffer.
1721 (push_it, pop_it): Save and restore paragraph_embedding member.
1722 (handle_single_display_spec, next_overlay_string)
1723 (get_overlay_strings_1, reseat_1, reseat_to_string)
1724 (push_display_prop): Set up the `unibyte' member of bidi_it.string
1725 correctly. Don't assume unibyte strings are not bidi-reordered.
1726 (compute_display_string_pos)
1727 (compute_display_string_end): Fix handling the case of C string.
1728 (push_it, pop_it): Save and restore from_disp_prop_p.
1729 (handle_single_display_spec, push_display_prop): Set the
1730 from_disp_prop_p flag.
1731 (get_overlay_strings_1): Reset the from_disp_prop_p flag.
1732 (pop_it): Call iterate_out_of_display_property only if we are
1733 popping after iteration over a string that came from a display
1734 property. Fix a typo in popping stretch info. Add an assertion
1735 for verifying that the iterator position is in sync with the bidi
1736 iterator.
1737 (handle_single_display_spec, get_overlay_strings_1)
1738 (push_display_prop): Fix initialization of paragraph direction for
1739 string when that of the parent object is not yet determined.
1740 (reseat_1): Call bidi_init_it to resync the bidi
1741 iterator with IT's position. (Bug#7616)
1742 (find_row_edges): If ROW->start.pos gives position
1743 smaller than min_pos, use it as ROW->minpos. (Bug#7616)
1744 (handle_stop, back_to_previous_visible_line_start, reseat_1):
1745 Reset the from_disp_prop_p flag.
1746 (SAVE_IT, RESTORE_IT): New macros.
1747 (pos_visible_p, face_before_or_after_it_pos)
1748 (back_to_previous_visible_line_start)
1749 (move_it_in_display_line_to, move_it_in_display_line)
1750 (move_it_to, move_it_vertically_backward, move_it_by_lines)
1751 (try_scrolling, redisplay_window, display_line): Use them when
1752 saving a temporary copy of the iterator and restoring it back.
1753 (back_to_previous_visible_line_start, reseat_1)
1754 (init_iterator): Empty the bidi cache "stack".
1755 (move_it_in_display_line_to): If iterator ended up at
1756 EOL, but we never saw any buffer positions smaller than
1757 to_charpos, return MOVE_POS_MATCH_OR_ZV. Fixes vertical cursor
1758 motion in bidi-reordered lines.
1759 (move_it_in_display_line_to): Record prev_method and prev_pos
1760 immediately before the call to set_iterator_to_next. Fixes cursor
1761 motion in bidi-reordered lines with stretch glyphs and strings
1762 displayed in margins. (Bug#8133) (Bug#8867)
1763 Return MOVE_POS_MATCH_OR_ZV only if iterator position is past
1764 TO_CHARPOS.
640c8776
SM
1765 (pos_visible_p): Support positions in bidi-reordered lines.
1766 Save and restore bidi cache.
0bb23927
EZ
1767
1768 * bidi.c (bidi_level_of_next_char): clen should be EMACS_NT, not int.
1769 (bidi_paragraph_info): Delete unused struct.
1770 (bidi_cache_idx, bidi_cache_last_idx): Declare EMACS_INT.
1771 (bidi_cache_start): New variable.
1772 (bidi_cache_reset): Reset bidi_cache_idx to bidi_cache_start, not
1773 to zero.
1774 (bidi_cache_fetch_state, bidi_cache_search)
1775 (bidi_cache_find_level_change, bidi_cache_iterator_state)
1776 (bidi_cache_find, bidi_peek_at_next_level)
1777 (bidi_level_of_next_char, bidi_find_other_level_edge)
1778 (bidi_move_to_visually_next): Compare cache index with
1779 bidi_cache_start rather than with zero.
1780 (bidi_fetch_char): Accept new argument STRING; all callers
1781 changed. Support iteration over a string. Support strings with
1782 display properties. Support unibyte strings. Fix the type of
1783 `len' according to what STRING_CHAR_AND_LENGTH expects.
1784 (bidi_paragraph_init, bidi_resolve_explicit_1)
1785 (bidi_resolve_explicit, bidi_resolve_weak)
640c8776
SM
1786 (bidi_level_of_next_char, bidi_move_to_visually_next):
1787 Support iteration over a string.
0bb23927
EZ
1788 (bidi_set_sor_type, bidi_resolve_explicit_1)
1789 (bidi_resolve_explicit, bidi_type_of_next_char): ignore_bn_limit
1790 can now be zero (for strings); special values 0 and -1 were
1791 changed to -1 and -2, respectively.
1792 (bidi_char_at_pos): New function.
1793 (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak):
1794 Call it instead of FETCH_MULTIBYTE_CHAR.
1795 (bidi_move_to_visually_next): Abort if charpos or bytepos were not
1796 initialized to valid values.
1797 (bidi_init_it): Don't initialize charpos and bytepos with invalid
1798 values.
1799 (bidi_level_of_next_char): Allow the sentinel "position" to pass
1800 the test for valid cached positions. Fix the logic for looking up
1801 the sentinel state in the cache. GCPRO the Lisp string we are
1802 iterating.
1803 (bidi_push_it, bidi_pop_it): New functions.
1804 (bidi_initialize): Initialize the bidi cache start stack pointer.
1805 (bidi_cache_ensure_space): New function, refactored from part of
1806 bidi_cache_iterator_state. Don't assume the required size is just
1807 one BIDI_CACHE_CHUNK away.
1808 (bidi_cache_start_stack, bidi_push_it): Use IT_STACK_SIZE.
1809 (bidi_count_bytes, bidi_char_at_pos): New functions.
1810 (bidi_cache_search): Don't assume bidi_cache_last_idx is
1811 always valid if bidi_cache_idx is valid.
1812 (bidi_cache_find_level_change): xassert that bidi_cache_last_idx
1813 is valid if it's going to be used.
1814 (bidi_shelve_cache, bidi_unshelve_cache): New functions.
1815 (bidi_cache_fetch_state, bidi_cache_search)
c965adc5
EZ
1816 (bidi_cache_find_level_change, bidi_cache_ensure_space)
1817 (bidi_cache_iterator_state, bidi_cache_find)
640c8776
SM
1818 (bidi_find_other_level_edge, bidi_cache_start_stack):
1819 All variables related to cache indices are now EMACS_INT.
c965adc5 1820
0bb23927
EZ
1821 * dispextern.h (struct bidi_string_data): New structure.
1822 (struct bidi_it): New member `string'. Make flag members be 1-bit
1823 fields, and put them last in the struct.
640c8776
SM
1824 (compute_display_string_pos, compute_display_string_end):
1825 Update prototypes.
0bb23927
EZ
1826 (bidi_push_it, bidi_pop_it): Add prototypes.
1827 (struct iterator_stack_entry): New members bidi_p,
1828 paragraph_embedding, and from_disp_prop_p.
1829 (struct it): Member bidi_p is now a bit field 1 bit wide.
640c8776
SM
1830 (bidi_shelve_cache, bidi_unshelve_cache):
1831 Declare prototypes.
0bb23927
EZ
1832
1833 * .gdbinit (xvectype, xvector, xcompiled, xchartable, xboolvector)
1834 (xpr, xfont, xbacktrace): Use "header.size" when accessing vectors
1835 and vector-like objects.
1836
1837 * dispnew.c (buffer_posn_from_coords): Save and restore the bidi
1838 cache around display iteration.
1839
1840 * window.c (Fwindow_end, window_scroll_pixel_based)
1841 (displayed_window_lines, Frecenter): Save and restore the bidi
1842 cache around display iteration.
1843
3bbd2265
LMI
18442011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
1845
1846 * editfns.c (Fdelete_region): Clarify the use of the named
1847 parameters (bug#6788).
1848
adc47434
MR
18492011-07-14 Martin Rudalics <rudalics@gmx.at>
1850
1851 * indent.c (Fvertical_motion): Set and restore w->pointm when
1852 saving and restoring the window's buffer (Bug#9006).
1853
837c31f8
LMI
18542011-07-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
1855
1856 * editfns.c (Fstring_to_char): Clarify just what is returned
1857 (bug#6576). Text by Eli Zaretskii.
1858
ac389d0c
JB
18592011-07-13 Juanma Barranquero <lekktu@gmail.com>
1860
1861 * gnutls.c (init_gnutls_functions): Honor gnutls_log_level (bug#9059).
1862
0be0ce47
EZ
18632011-07-13 Eli Zaretskii <eliz@gnu.org>
1864
1865 * buffer.c (mmap_find): Fix a typo.
1866
cd18e7e3
JB
18672011-07-13 Johan Bockgård <bojohan@gnu.org>
1868
1869 Fix execution of x selection hooks.
1870 * xselect.c (Qx_lost_selection_functions)
1871 (Qx_sent_selection_functions): New vars.
1872 (syms_of_xselect): DEFSYM them.
1873 (x_handle_selection_request): Pass Qx_sent_selection_functions
1874 rather than Vx_sent_selection_functions to Frun_hook_with_args.
1875 (x_handle_selection_clear,x_clear_frame_selections):
1876 Pass Qx_lost_selection_functions rather than
1877 Vx_lost_selection_functions to Frun_hook_with_args.
1878
47ea7f44
PE
18792011-07-13 Paul Eggert <eggert@cs.ucla.edu>
1880
ac389d0c 1881 * buffer.c (Fget_buffer_create): Initialize inhibit_shrinking.
2941c447
PE
1882 The old code sometimes used this field without initializing it.
1883
47ea7f44
PE
1884 * alloc.c (gc_sweep): Don't read past end of array.
1885 In theory, the old code could also have corrupted Emacs internals,
1886 though it'd be very unlikely.
1887
bc985c87
AS
18882011-07-12 Andreas Schwab <schwab@linux-m68k.org>
1889
1890 * character.c (Fcharacterp): Don't advertise optional ignored
ac389d0c 1891 argument. (Bug#4026)
bc985c87 1892
0cf34688
LMI
18932011-07-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
1894
b3dadd76
LMI
1895 * keymap.c (syms_of_keymap): Clarify that "modifier" is "modifier
1896 key" (bug#4257).
1897
0cf34688
LMI
1898 * window.c (Fset_window_start): Doc fix (bug#4199).
1899 (Fset_window_hscroll): Ditto.
1900
270768cd
PE
19012011-07-12 Paul Eggert <eggert@cs.ucla.edu>
1902
077e3dda 1903 Fix minor new problems caught by GCC 4.6.1.
270768cd 1904 * term.c (init_tty): Remove unused local.
490011a6 1905 * xsettings.c (store_monospaced_changed): Define this function only
077e3dda 1906 if (defined HAVE_GSETTINGS || defined HAVE_GCONF), as it's
490011a6 1907 not used otherwise.
270768cd 1908
b1f58454
CY
19092011-07-12 Chong Yidong <cyd@stupidchicken.com>
1910
1911 * xdisp.c (Vresize_mini_windows): Minor doc fix (Bug#3300).
1912
22b9578d
LMI
19132011-07-11 Lars Magne Ingebrigtsen <larsi@gnus.org>
1914
6e70ab07
LMI
1915 * xdisp.c (syms_of_xdisp): Make it explicit that the mini-windows
1916 are the mini-buffer and the echo area (bug#3320).
1917
22b9578d
LMI
1918 * term.c (init_tty): Remove support for supdup, c10 and perq
1919 terminals, which are no longer supported (bug#1482).
1920
8974cc9f
JB
19212011-07-10 Johan Bockgård <bojohan@gnu.org>
1922
1923 * xdisp.c (Ftool_bar_lines_needed): Fix WINDOWP check.
1924
a560d974
JD
19252011-07-10 Jan Djärv <jan.h.d@swipnet.se>
1926
1927 * xmenu.c (menu_highlight_callback): Only pass frame to show_help_event
1928 for non-popups (Bug#3642).
1929
1dae0f0a
AS
19302011-07-10 Andreas Schwab <schwab@linux-m68k.org>
1931
268c2c36 1932 * alloc.c (reset_malloc_hooks): Protoize.
1dae0f0a 1933 * buffer.c (mmap_init, mmap_find, mmap_free_1, mmap_enlarge)
268c2c36
AS
1934 (mmap_set_vars, mmap_alloc, mmap_free, mmap_realloc): Likewise.
1935 * cm.c (losecursor): Likewise.
1dae0f0a
AS
1936 * data.c (fmod): Likewise.
1937 * dispnew.c (swap_glyphs_in_rows): Likewise.
1938 * emacs.c (memory_warning_signal): Likewise.
1939 * floatfns.c (float_error): Likewise.
1940 * font.c (check_gstring, check_otf_features, otf_tag_symbol)
1941 (otf_open, font_otf_capability, generate_otf_features)
1942 (font_otf_DeviceTable, font_otf_ValueRecord, font_otf_Anchor):
1943 Likewise.
1944 * image.c (pbm_read_file): Likewise.
1945 * indent.c (string_display_width): Likewise.
1946 * intervals.c (check_for_interval, search_for_interval)
1947 (inc_interval_count, count_intervals, root_interval)
1948 (adjust_intervals_for_insertion, make_new_interval): Likewise.
1949 * lread.c (defalias): Likewise.
268c2c36 1950 * ralloc.c (r_alloc_check): Likewise.
1dae0f0a
AS
1951 * regex.c (set_image_of_range_1, set_image_of_range)
1952 (regex_grow_registers): Likewise.
1953 * sysdep.c (strerror): Likewise.
1954 * termcap.c (valid_filename_p, tprint, main): Likewise.
1955 * tparam.c (main): Likewise.
1956 * unexhp9k800.c (run_time_remap, save_data_space)
1957 (update_file_ptrs, read_header, write_header, calculate_checksum)
1958 (copy_file, copy_rest, display_header): Likewise.
1959 * widget.c (mark_shell_size_user_specified, create_frame_gcs):
1960 Likewise.
1961 * xdisp.c (check_it): Likewise.
1962 * xfaces.c (register_color, unregister_color, unregister_colors):
1963 Likewise.
1964 * xfns.c (print_fontset_result): Likewise.
1965 * xrdb.c (member, fatal, main): Likewise.
1966
99033785
PE
19672011-07-10 Paul Eggert <eggert@cs.ucla.edu>
1968
1969 Fix minor problems found by static checking (Bug#9031).
1970 * chartab.c (char_table_set_range, map_sub_char_table):
1971 Remove unused locals.
1972 (uniprop_table): Now static.
1973 * composite.c (_work_char): Remove unused static var.
1974
9cb2ac56
JB
19752011-07-09 Juanma Barranquero <lekktu@gmail.com>
1976
1977 * chartab.c (uniprop_table_uncompress): Remove unused local variable.
1978
f25661f0
JD
19792011-07-09 Jan Djärv <jan.h.d@swipnet.se>
1980
1981 * gtkutil.c (qttip_cb): Remove code without function.
1982
8278c4fe
EZ
19832011-07-09 Eli Zaretskii <eliz@gnu.org>
1984
1985 * w32.c (pthread_sigmask): New stub.
1986
1692ae2d 19872011-07-08 Paul Eggert <eggert@cs.ucla.edu>
123403e4 1988
8a6ebd58 1989 Use pthread_sigmask, not sigprocmask (Bug#9010).
123403e4
PE
1990 sigprocmask is portable only for single-threaded applications, and
1991 Emacs can be multi-threaded when it uses GTK.
1301ac26
PE
1992 * Makefile.in (LIB_PTHREAD_SIGMASK): New macro.
1993 (LIBES): Use it.
1994 * callproc.c (Fcall_process):
1995 * process.c (create_process):
1996 * sysdep.c (sys_sigblock, sys_sigunblock, sys_sigsetmask):
1997 Use pthread_sigmask, not sigprocmask.
123403e4 1998
1b854618
JD
19992011-07-08 Jan Djärv <jan.h.d@swipnet.se>
2000
2001 * gtkutil.c (qttip_cb): Set line wrap to FALSE for tooltip widget.
2002 (xg_prepare_tooltip): Revert text in x->ttip_lbl, margins was
2003 wrong (Bug#8591).
2004
3fe4b549
JD
20052011-07-08 Jan Djärv <jan.h.d@swipnet.se>
2006
0ce7e563
JD
2007 * gtkutil.c (xg_prepare_tooltip): Fix indentation and comment.
2008 Put text in x->ttip_lbl instead of gtk_tooltip_set_text (Bug#8591).
2009 (xg_hide_tooltip): Fix comment.
2010
3fe4b549
JD
2011 * nsterm.m (initFrameFromEmacs): Don't use ns_return_types
2012 in registerServicesMenuSendTypes.
2013 (validRequestorForSendType): Don't check ns_return_types.
2014
2015 * nsfns.m (Fx_open_connection): Put NSStringPboardType into
2016 ns_return_type.
2017
5df75e47
JR
20182011-07-08 Jason Rumney <jasonr@gnu.org>
2019
2020 * w32fns.c (w32_wnd_proc) [WM_TIMER, WM_SET_CURSOR]: Avoid using
2021 frame struct members of non-existent frames (Bug#6284).
2022
699c10bd
JD
20232011-07-08 Jan Djärv <jan.h.d@swipnet.se>
2024
4393663b
JD
2025 * nsterm.m (keyDown): Call to wantsToDelayTextChangeNotifications and
2026 variable firstTime not needed on OSX >= 10.6.
2027 (setPosition): setFloatValue:knobProportion: is deprecated on OSX
2028 >= 10.5. Use setKnobProportion, setDoubleValue.
2029
2030 * nsterm.h (MAC_OS_X_VERSION_10_3, MAC_OS_X_VERSION_10_4)
2031 (MAC_OS_X_VERSION_10_5): Define if not defined.
2032 (EmacsView, EmacsTooltip): Implements NSWindowDelegate on OSX >= 10.6.
2033 (EmacsMenu): Implements NSMenuDelegate on OSX >= 10.6.
2034 (EmacsToolbar): Implements NSToolbarDelegate on OSX >= 10.6.
2035
2036 * nsselect.m (ns_string_from_pasteboard): Don't use deprecated methods
2037 cString and lossyCString on OSX >= 10.4
2038
2039 * nsmenu.m (fillWithWidgetValue): Don't use depercated method
2040 sizeToFit on OSX >= 10.2.
2041
2042 * nsimage.m (allocInitFromFile): Don't use deprecated method
2043 bestRepresentationForDevice on OSX >= 10.6.
2044
2045 * nsfns.m (check_ns_display_info): Cast to long and use %ld in error
2046 to avoid warning.
2047
2048 * emacs.c: Declare unexec_init_emacs_zone.
2049
a63e0781
JD
2050 * nsgui.h: Fix compiler warning about gnulib redefining verify.
2051
699c10bd
JD
2052 * nsselect.m (ns_get_local_selection): Change to extern (Bug#8842).
2053
2054 * nsmenu.m (ns_update_menubar): Remove useless setDelegate call
2055 on svcsMenu (Bug#8842).
2056
2057 * nsfns.m (Fx_open_connection): Remove NSStringPboardType from
2058 ns_return_types.
2059 (Fns_list_services): Just return Qnil on 10.6, code not working there.
2060
2061 * nsterm.m (QUTF8_STRING): Declare.
2062 (initFrameFromEmacs): Call registerServicesMenuSendTypes.
2063 (validRequestorForSendType): Return type is (id).
2064 Change indexOfObjectIdenticalTo to indexOfObject.
2065 Check if we have local selection before returning self (Bug#8842).
2066 (writeSelectionToPasteboard): Put local selection into paste board
2067 if we have a local selection (Bug#8842).
2068 (syms_of_nsterm): DEFSYM QUTF8_STRING.
2069
2070 * nsterm.h (MAC_OS_X_VERSION_10_6): Define here instead of nsterm.m.
2071 (ns_get_local_selection): Declare.
2072
54e10184
LMI
20732011-07-07 Lars Magne Ingebrigtsen <larsi@gnus.org>
2074
9888ff71
LMI
2075 * keymap.c (describe_map_tree): Don't insert a double newline at
2076 the end of the buffer (bug#1169) and return whether we inserted
2077 something.
2078
54e10184
LMI
2079 * callint.c (Fcall_interactively): Change "reading args" to
2080 "providing args" to try to clarify what it does (bug#1010).
2081
15fa4783
KH
20822011-07-07 Kenichi Handa <handa@m17n.org>
2083
2084 * composite.c (composition_compute_stop_pos): Ignore a static
2085 composition starting before CHARPOS (Bug#8915).
2086
2087 * xdisp.c (handle_composition_prop): Likewise.
2088
a8815b00
EZ
20892011-07-07 Eli Zaretskii <eliz@gnu.org>
2090
2091 * term.c (produce_glyphs) <xassert>: Allow IT_GLYPHLESS in it->what.
2092 (Bug#9015)
2093
ef7b981d 20942011-07-07 Kenichi Handa <handa@m17n.org>
c805dec0
KH
2095
2096 * character.h (unicode_category_t): New enum type.
2097
2098 * chartab.c (uniprop_decoder_t, uniprop_encoder_t): New types.
2099 (Qchar_code_property_table): New variable.
2100 (UNIPROP_TABLE_P, UNIPROP_GET_DECODER)
2101 (UNIPROP_COMPRESSED_FORM_P): New macros.
2102 (char_table_ascii): Uncompress the compressed values.
2103 (sub_char_table_ref): New arg is_uniprop. Callers changed.
2104 Uncompress the compressed values.
ac389d0c 2105 (sub_char_table_ref_and_range): Likewise.
c805dec0
KH
2106 (char_table_ref_and_range): Uncompress the compressed values.
2107 (sub_char_table_set): New arg is_uniprop. Callers changed.
2108 Uncompress the compressed values.
2109 (sub_char_table_set_range): Args changed. Callers changed.
2110 (char_table_set_range): Adjuted for the above change.
2111 (map_sub_char_table): Delete args default_val and parent. Add arg
2112 top. Give decoded values to a Lisp function.
640c8776 2113 (map_char_table): Adjust for the above change. Give decoded
c805dec0
KH
2114 values to a Lisp function. Gcpro more variables.
2115 (uniprop_table_uncompress)
2116 (uniprop_decode_value_run_length): New functions.
2117 (uniprop_decoder, uniprop_decoder_count): New variables.
2118 (uniprop_get_decoder, uniprop_encode_value_character)
2119 (uniprop_encode_value_run_length, uniprop_encode_value_numeric):
2120 New functions.
2121 (uniprop_encoder, uniprop_encoder_count): New variables.
2122 (uniprop_get_encoder, uniprop_table)
2123 (Funicode_property_table_internal, Fget_unicode_property_internal)
2124 (Fput_unicode_property_internal): New functions.
2125 (syms_of_chartab): DEFSYM Qchar_code_property_table, defsubr
2126 Sunicode_property_table_internal, Sget_unicode_property_internal,
5e617bc2 2127 and Sput_unicode_property_internal. Defvar_lisp
c805dec0
KH
2128 char-code-property-alist.
2129
640c8776 2130 * composite.c (CHAR_COMPOSABLE_P): Adjust for the change of
c805dec0
KH
2131 Vunicode_category_table.
2132
640c8776 2133 * font.c (font_range): Adjust for the change of
c805dec0
KH
2134 Vunicode_category_table.
2135
76b397fb
DN
21362011-07-07 Dan Nicolaescu <dann@ics.uci.edu>
2137
2138 * m/iris4d.h: Remove file, move contents ...
2139 * s/irix6-5.h: ... here.
2140
22b4128e
PE
21412011-07-06 Paul Eggert <eggert@cs.ucla.edu>
2142
2143 Remove unportable assumption about struct layout (Bug#8884).
8a5c77bb
PE
2144 * alloc.c (mark_buffer):
2145 * buffer.c (reset_buffer_local_variables, Fbuffer_local_variables)
2146 (clone_per_buffer_values): Don't assume that
22b4128e
PE
2147 sizeof (struct buffer) is a multiple of sizeof (Lisp_Object).
2148 This isn't true in general, and it's particularly not true
2149 if Emacs is configured with --with-wide-int.
2150 * buffer.h (FIRST_FIELD_PER_BUFFER, LAST_FIELD_PER_BUFFER):
2151 New macros, used in the buffer.c change.
2152
869795d6
JD
21532011-07-05 Jan Djärv <jan.h.d@swipnet.se>
2154
2155 * xsettings.c: Use both GConf and GSettings if both are available.
2156 (store_config_changed_event): Add comment.
2157 (dpyinfo_valid, store_font_name_changed, map_tool_bar_style)
2158 (store_tool_bar_style_changed): New functions.
5e617bc2 2159 (store_monospaced_changed): Add comment. Call dpyinfo_valid.
869795d6
JD
2160 (struct xsettings): Move font inside HAVE_XFT.
2161 (GSETTINGS_TOOL_BAR_STYLE, GSETTINGS_FONT_NAME): New defines.
640c8776 2162 (GSETTINGS_MONO_FONT): Rename from SYSTEM_MONO_FONT.
869795d6 2163 Move inside HAVE_XFT.
640c8776 2164 (something_changed_gsettingsCB): Rename from something_changedCB.
869795d6
JD
2165 Check for changes in GSETTINGS_TOOL_BAR_STYLE and GSETTINGS_FONT_NAME
2166 also.
2167 (GCONF_TOOL_BAR_STYLE, GCONF_FONT_NAME): New defines.
5e617bc2 2168 (GCONF_MONO_FONT): Rename from SYSTEM_MONO_FONT. Move inside HAVE_XFT.
640c8776 2169 (something_changed_gconfCB): Rename from something_changedCB.
869795d6
JD
2170 Check for changes in GCONF_TOOL_BAR_STYLE and GCONF_FONT_NAME also.
2171 (parse_settings): Move check for font inside HAVE_XFT.
2172 (read_settings, apply_xft_settings): Add comment.
2173 (read_and_apply_settings): Add comment. Call map_tool_bar_style and
2174 store_tool_bar_style_changed. Move check for font inside HAVE_XFT and
2175 call store_font_name_changed.
2176 (xft_settings_event): Add comment.
2177 (init_gsettings): Add comment. Get values for GSETTINGS_TOOL_BAR_STYLE
2178 and GSETTINGS_FONT_NAME. Move check for fonts within HAVE_XFT.
2179 (init_gconf): Add comment. Get values for GCONF_TOOL_BAR_STYLE
2180 and GCONF_FONT_NAME. Move check for fonts within HAVE_XFT.
2181 (xsettings_initialize): Call init_gsettings last.
640c8776
SM
2182 (xsettings_get_system_font, xsettings_get_system_normal_font):
2183 Add comment.
869795d6 2184
d8ed26bd
PE
21852011-07-05 Paul Eggert <eggert@cs.ucla.edu>
2186
2187 Random fixes. E.g., (random) never returned negative values.
2188 * fns.c (Frandom): Use GET_EMACS_TIME for random seed, and add the
2189 subseconds part to the entropy, as that's a bit more random.
2190 Prefer signed to unsigned, since the signedness doesn't matter and
2191 in general we prefer signed. When given a limit, use a
2192 denominator equal to INTMASK + 1, not to VALMASK + 1, because the
2193 latter isn't right if USE_2_TAGS_FOR_INTS.
2194 * sysdep.c (get_random): Return a value in the range 0..INTMASK,
2195 not 0..VALMASK. Don't discard "excess" bits that random () returns.
2196
cabf1cac
SM
21972011-07-04 Stefan Monnier <monnier@iro.umontreal.ca>
2198
2199 * textprop.c (text_property_stickiness):
2200 Obey Vtext_property_default_nonsticky.
2201 (syms_of_textprop): Add `display' to Vtext_property_default_nonsticky.
2202 * w32fns.c (syms_of_w32fns):
2203 * xfns.c (syms_of_xfns): Don't Add `display' since it's there by default.
2204
6e9b2be9
PE
22052011-07-04 Paul Eggert <eggert@cs.ucla.edu>
2206
2207 * fileio.c (barf_or_query_if_file_exists): Use S_ISDIR.
2208 This is more efficient than Ffile_directory_p and avoids a minor race.
2209
90186c68
LMI
22102011-07-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
2211
7c301272
LMI
2212 * buffer.c (Foverlay_put): Say what the return value is
2213 (bug#7835).
2214
c4f2d8d4
LMI
2215 * fileio.c (barf_or_query_if_file_exists): Check first if the file
2216 is a directory before asking whether to use the file name
2217 (bug#7564).
ad637907
LMI
2218 (barf_or_query_if_file_exists): Make the "File is a directory"
2219 error be more correct.
c4f2d8d4 2220
90186c68
LMI
2221 * fns.c (Frequire): Remove the mention of the .gz files, since
2222 that's installation-specific, but keep the mention of
2223 `get-load-suffixes'.
2224
da64016e
PE
22252011-07-04 Paul Eggert <eggert@cs.ucla.edu>
2226
2227 * editfns.c (Fformat_time_string): Don't assume strlen fits in int.
2228 Report string overflow if the output is too long.
2229
7d47b580
JB
22302011-07-04 Juanma Barranquero <lekktu@gmail.com>
2231
a555cb87
JB
2232 * gnutls.c (Fgnutls_boot): Don't mention :verify-error.
2233 (syms_of_gnutls): Remove duplicate DEFSYM for
2234 Qgnutls_bootprop_verify_hostname_error, an error for
2235 Qgnutls_bootprop_verify_error (which is no longer used).
2236
7d47b580
JB
2237 * eval.c (find_handler_clause): Remove parameters `sig' and `data',
2238 unused since 2011-01-26T20:02:07Z!monnier@iro.umontreal.ca. All callers changed.
2239 Also (re)move comments that are misplaced or no longer relevant.
2240
1e49bfab
LMI
22412011-07-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
2242
2243 * callint.c (Finteractive): Clarify the meaning of "@" (bug#8813).
2244
1485f4c0
CY
22452011-07-03 Chong Yidong <cyd@stupidchicken.com>
2246
2247 * xfaces.c (Finternal_merge_in_global_face): Modify the foreground
2248 and background color parameters if they have been changed.
2249
a9ab721e
LMI
22502011-07-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
2251
2252 * editfns.c (Fformat): Clarify the - and 0 flags (bug#6659).
2253
cf7cff57
PE
22542011-07-03 Paul Eggert <eggert@cs.ucla.edu>
2255
2e13213d
PE
2256 * xsettings.c (SYSTEM_FONT): Define only when used.
2257 No need to define when HAVE_GSETTINGS || !HAVE_XFT.
2258
cf7cff57
PE
2259 * keymap.c (access_keymap_1): Now static.
2260
7a8e04f7
CY
22612011-07-02 Chong Yidong <cyd@stupidchicken.com>
2262
2263 * keyboard.c (command_loop_1): If a down-mouse event is unbound,
2264 leave any prefix arg for the up event (Bug#1586).
2265
61352f62
LMI
22662011-07-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
2267
69bb1ef7
LMI
2268 * lread.c (syms_of_lread): Mention single symbols defined by
2269 `defvar' or `defconst' (bug#7154).
2270
61352f62 2271 * fns.c (Frequire): Mention .el.gz files (bug#7314).
7b3747f9 2272 (Frequire): Mention get-load-suffixes.
61352f62 2273
28545e04
MR
22742011-07-02 Martin Rudalics <rudalics@gmx.at>
2275
2276 * window.h (window): Remove clone_number slot.
2277 * window.c (Fwindow_clone_number, Fset_window_clone_number):
2278 Remove.
2279 (make_parent_window, make_window, saved_window)
2280 (Fset_window_configuration, save_window_save): Don't deal with
2281 clone numbers.
2282 * buffer.c (Qclone_number): Remove declaration.
2283 (sort_overlays, overlay_strings): Don't deal with clone numbers.
2284
3349e122
SM
22852011-07-02 Stefan Monnier <monnier@iro.umontreal.ca>
2286
2287 Add multiple inheritance to keymaps.
2288 * keymap.c (Fmake_composed_keymap): New function.
2289 (Fset_keymap_parent): Simplify.
2290 (fix_submap_inheritance): Remove.
2291 (access_keymap_1): New function extracted from access_keymap to handle
2292 embedded parents and handle lists of maps.
2293 (access_keymap): Use it.
2294 (Fkeymap_prompt, map_keymap_internal, map_keymap, store_in_keymap)
2295 (Fcopy_keymap): Handle embedded parents.
2296 (Fcommand_remapping, define_as_prefix): Simplify.
2297 (Fkey_binding): Simplify.
2298 (syms_of_keymap): Move minibuffer-local-completion-map,
2299 minibuffer-local-filename-completion-map,
2300 minibuffer-local-must-match-map, and
2301 minibuffer-local-filename-must-match-map to Elisp.
2302 (syms_of_keymap): Defsubr make-composed-keymap.
2303 * keyboard.c (menu_bar_items): Use map_keymap_canonical.
2304 (parse_menu_item): Trivial simplification.
2305
3279eb87
GM
23062011-07-01 Glenn Morris <rgm@gnu.org>
2307
2308 * Makefile.in (SETTINGS_LIBS): Fix typo.
2309
4550efdf
KI
23102011-07-01 Kazuhiro Ito <kzhr@d1.dion.ne.jp> (tiny patch)
2311
2312 * coding.c (Fencode_coding_string): Record the last coding system
2313 used, as the function doc string says (bug#8738).
2314
0949d2b6
JD
23152011-07-01 Jan Djärv <jan.h.d@swipnet.se>
2316
2317 * xsettings.c (store_monospaced_changed): Take new font as arg and
2318 check for change against current_mono_font.
2319 (EMACS_TYPE_SETTINGS): Remove this and related defines.
2320 (emacs_settings_constructor, emacs_settings_get_property)
2321 (emacs_settings_set_property, emacs_settings_class_init)
2322 (emacs_settings_init, gsettings_obj): Remove.
2323 (something_changedCB): New function for HAVE_GSETTINGS.
2324 (something_changedCB): HAVE_GCONF: Call store_monospaced_changed
2325 with value as argument.
2326 (init_gsettings): Check that GSETTINGS_SCHEMA exists before calling
2327 g_settings_new (Bug#8967). Do not create gsettings_obj.
9173deec 2328 Remove calls to g_settings_bind. Connect something_changedCB to
0949d2b6
JD
2329 "changed".
2330
2331 * xgselect.c: Add defined (HAVE_GSETTINGS).
2332 (xgselect_initialize): Ditto.
2333
2334 * process.c: Add defined (HAVE_GSETTINGS) for xgselect.h
2335 (wait_reading_process_output): Add defined (HAVE_GSETTINGS) for
2336 xg_select.
2337
bbc6b304
PE
23382011-07-01 Paul Eggert <eggert@cs.ucla.edu>
2339
2340 * eval.c (struct backtrace): Simplify and port the data structure.
2341 Do not assume that "int nargs : BITS_PER_INT - 2;" produces a
2342 signed bit field, as this assumption is not portable and it makes
2343 Emacs crash when compiled with Sun C 5.8 on sparc. Do not use
2344 "char debug_on_exit : 1" as this is not portable either; instead,
2345 use the portable "unsigned int debug_on_exit : 1". Remove unused
2346 member evalargs. Remove obsolete comments about cc bombing out.
2347
9851bfc5
JD
23482011-06-30 Jan Djärv <jan.h.d@swipnet.se>
2349
51bb811f 2350 * xsettings.c: Include glib-object.h, gio/gio.h if HAVE_GSETTINGS.
9851bfc5
JD
2351 Let HAVE_GSETTINGS override HAVE_GCONF.
2352 (store_monospaced_changed): New function.
2353 (EMACS_SETTINGS): A new type derived from GObject to handle
2354 GSettings notifications.
2355 (emacs_settings_constructor, emacs_settings_get_property)
2356 (emacs_settings_set_property, emacs_settings_class_init):
2357 New functions.
2358 (gsettings_client, gsettings_obj): New variables.
2359 (GSETTINGS_SCHEMA): New define.
2360 (something_changedCB): Call store_monospaced_changed.
2361 (init_gsettings): New function.
2362 (xsettings_initialize): Call init_gsettings.
2363 (syms_of_xsettings): Initialize gsettings_client, gsettings_obj
2364 to NULL.
2365
640c8776 2366 * Makefile.in (SETTINGS_CFLAGS, SETTINGS_LIBS): Rename from
9851bfc5
JD
2367 GCONF_CFLAGS/LIBS.
2368
5386012d
MR
23692011-06-29 Martin Rudalics <rudalics@gmx.at>
2370
2371 * window.c (resize_root_window, grow_mini_window)
2372 (shrink_mini_window): Rename Qresize_root_window to
2373 Qwindow_resize_root_window and Qresize_root_window_vertically to
2374 Qwindow_resize_root_window_vertically.
2375
f13e0b08
PE
23762011-06-28 Paul Eggert <eggert@cs.ucla.edu>
2377
2378 * gnutls.c (Qgnutls_bootprop_verify_error): Remove unused var.
2379
94515237
JB
23802011-06-27 Juanma Barranquero <lekktu@gmail.com>
2381
2382 * makefile.w32-in: Redesign dependencies so they reflect more
2383 clearly which files are directly included by each source file,
2384 and not through other includes.
2385
e43b6e43
MR
23862011-06-27 Martin Rudalics <rudalics@gmx.at>
2387
2388 * buffer.c (Qclone_number): Declare static and DEFSYM it.
2389 (sort_overlays, overlay_strings): When an overlay's clone number
2390 matches the window's clone number process the overlay even if
2391 the overlay's window property doesn't match the current window.
2392
d68443dc
MR
2393 * window.c (Fwindow_vchild): Rename to Fwindow_top_child.
2394 (Fwindow_hchild): Rename to Fwindow_left_child.
2395 (Fwindow_next): Rename to Fwindow_next_sibling.
2396 (Fwindow_prev): Rename to Fwindow_prev_sibling.
d615d6d2
MR
2397 (resize_window_check): Rename to window_resize_check.
2398 (resize_window_apply): Rename to window_resize_apply.
2399 (Fresize_window_apply): Rename to Fwindow_resize_apply.
2400 (Fdelete_other_windows_internal, resize_frame_windows)
2401 (Fsplit_window_internal, Fdelete_window_internal)
2402 (grow_mini_window, shrink_mini_window)
2403 (Fresize_mini_window_internal): Fix callers accordingly.
d68443dc 2404
c7e73be5
JD
24052011-06-26 Jan Djärv <jan.h.d@swipnet.se>
2406
2407 * emacsgtkfixed.h: State that this is only used with Gtk+3.
2408 (emacs_fixed_set_min_size): Remove.
2409 (emacs_fixed_new): Take frame as argument.
2410
2411 * emacsgtkfixed.c: State that this is only used with Gtk+3.
2412 (_EmacsFixedPrivate): Remove minwidth/height.
2413 Add struct frame *f.
2414 (emacs_fixed_init): Initialize priv->f.
2415 (get_parent_class, emacs_fixed_set_min_size): Remove.
2416 (emacs_fixed_new): Set priv->f to argument.
2417 (emacs_fixed_get_preferred_width)
2418 (emacs_fixed_get_preferred_height): Use min_width/height from
2419 frames size_hint to set minimum and natural (Bug#8919).
2420 (XSetWMSizeHints, XSetWMNormalHints): Override these functions
2421 and use min_width/height from frames size_hint to set
2422 min_width/height (Bug#8919).
2423
2424 * gtkutil.c (xg_create_frame_widgets): Pass f to emacs_fixed_new.
9173deec
JB
2425 (x_wm_set_size_hint): Remove call to emacs_fixed_set_min_size.
2426 Fix indentation.
c7e73be5 2427
cf99dcf8
EZ
24282011-06-26 Eli Zaretskii <eliz@gnu.org>
2429
2430 * bidi.c (bidi_paragraph_init): Test for ZV_BYTE before calling
2431 bidi_at_paragraph_end, since fast_looking_at doesn't like to be
2432 called at ZV.
2433
029529ac
CY
24342011-06-26 Chong Yidong <cyd@stupidchicken.com>
2435
2436 * process.c (wait_reading_process_output): Bypass select if
2437 waiting for a cell while ignoring keyboard input, and input is
2438 pending. Suggested by Jan Djärv (Bug#8869).
2439
7a7ef429
PE
24402011-06-25 Paul Eggert <eggert@cs.ucla.edu>
2441
2442 Use gnulib's dup2 module instead of rolling our own.
2443 * sysdep.c (dup2) [!HAVE_DUP2]: Remove; gnulib now does this.
2444
11fdef7d 24452011-06-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
989b42d2
YM
2446
2447 * dispnew.c (scrolling_window): Before scrolling, turn off a
2448 mouse-highlight in the window being scrolled.
2449
cd3520a4
JB
24502011-06-24 Juanma Barranquero <lekktu@gmail.com>
2451
2452 Move DEFSYM to lisp.h and use everywhere.
2453
2454 * character.h (DEFSYM): Move declaration...
2455 * lisp.h (DEFSYM): ...here.
2456
2457 * gnutls.c:
2458 * minibuf.c:
2459 * w32menu.c:
2460 * w32proc.c:
2461 * w32select.c: Don't include character.h.
2462
2463 * alloc.c (syms_of_alloc):
2464 * buffer.c (syms_of_buffer):
2465 * bytecode.c (syms_of_bytecode):
2466 * callint.c (syms_of_callint):
2467 * casefiddle.c (syms_of_casefiddle):
2468 * casetab.c (init_casetab_once):
2469 * category.c (init_category_once, syms_of_category):
2470 * ccl.c (syms_of_ccl):
2471 * cmds.c (syms_of_cmds):
2472 * composite.c (syms_of_composite):
2473 * dbusbind.c (syms_of_dbusbind):
2474 * dired.c (syms_of_dired):
2475 * dispnew.c (syms_of_display):
2476 * doc.c (syms_of_doc):
2477 * editfns.c (syms_of_editfns):
2478 * emacs.c (syms_of_emacs):
2479 * eval.c (syms_of_eval):
2480 * fileio.c (syms_of_fileio):
2481 * fns.c (syms_of_fns):
2482 * frame.c (syms_of_frame):
2483 * fringe.c (syms_of_fringe):
2484 * insdel.c (syms_of_insdel):
2485 * keymap.c (syms_of_keymap):
2486 * lread.c (init_obarray, syms_of_lread):
2487 * macros.c (syms_of_macros):
2488 * msdos.c (syms_of_msdos):
2489 * print.c (syms_of_print):
2490 * process.c (syms_of_process):
2491 * search.c (syms_of_search):
2492 * sound.c (syms_of_sound):
2493 * syntax.c (init_syntax_once, syms_of_syntax):
2494 * terminal.c (syms_of_terminal):
2495 * textprop.c (syms_of_textprop):
2496 * undo.c (syms_of_undo):
2497 * w32.c (globals_of_w32):
2498 * window.c (syms_of_window):
2499 * xdisp.c (syms_of_xdisp):
2500 * xfaces.c (syms_of_xfaces):
2501 * xfns.c (syms_of_xfns):
2502 * xmenu.c (syms_of_xmenu):
2503 * xsettings.c (syms_of_xsettings):
2504 * xterm.c (syms_of_xterm): Use DEFSYM.
2505
4228cf16
TZ
25062011-06-24 Teodor Zlatanov <tzz@lifelogs.com>
2507
cd3520a4 2508 * gnutls.c (syms_of_gnutls): Use the DEFSYM macro from character.h.
4228cf16 2509
7fcccf1e
PE
25102011-06-23 Paul Eggert <eggert@cs.ucla.edu>
2511
7efb4e0e
PE
2512 Integer and buffer overflow fixes (Bug#8873).
2513
ff5844ad
PE
2514 * print.c (printchar, strout): Check for string overflow.
2515 (PRINTPREPARE, printchar, strout):
2516 Don't set size unless allocation succeeds.
2517
90532f02
PE
2518 * minibuf.c (read_minibuf_noninteractive): Use ptrdiff_t, not int,
2519 for sizes. Check for string overflow more accurately.
2520 Simplify newline removal at end; this suppresses a GCC 4.6.0 warning.
2521
6d84508d
PE
2522 * macros.c: Integer and buffer overflow fixes.
2523 * keyboard.h (struct keyboard.kbd_macro_bufsize):
2524 * macros.c (Fstart_kbd_macro, store_kbd_macro_char):
2525 Use ptrdiff_t, not int, for sizes.
2526 Don't increment bufsize until after realloc succeeds.
2527 Check for size-calculation overflow.
2528 (Fstart_kbd_macro): Use EMACS_INT, not int, for XINT result.
2529
437b2cb4
PE
2530 * lisp.h (DEFVAR_KBOARD): Use offsetof instead of char * finagling.
2531
8b9ac8b4
PE
2532 * lread.c: Integer overflow fixes.
2533 (read_integer): Radix is now EMACS_INT, not int,
2534 to improve quality of diagnostics for out-of-range radices.
2535 Calculate buffer size correctly for out-of-range radices.
2536 (read1): Check for integer overflow in radices, and in
2537 read-circle numbers.
82cb60d3
PE
2538 (read_escape): Avoid int overflow.
2539 (Fload, openp, read_buffer_size, read1)
2540 (substitute_object_recurse, read_vector, read_list, map_obarray):
2541 Use ptrdiff_t, not int, for sizes.
2542 (read1): Use EMACS_INT, not int, for sizes.
20270765 2543 Check for size overflow.
8b9ac8b4 2544
7fcccf1e
PE
2545 * image.c (cache_image): Check for size arithmetic overflow.
2546
bfbbd7e7
PE
2547 * lread.c: Integer overflow issues.
2548 (saved_doc_string_size, saved_doc_string_length)
2549 (prev_saved_doc_string_size, prev_saved_doc_string_length):
2550 Now ptrdiff_t, not int.
2551 (read1): Don't assume doc string length fits in int. Check for
2552 out-of-range doc string lengths.
2553 (read_list): Don't assume file position fits in int.
39019e54 2554 (read_escape): Check for hex character overflow.
bfbbd7e7 2555
4e323265
LL
25562011-06-22 Leo Liu <sdl.web@gmail.com>
2557
2558 * minibuf.c (Fcompleting_read_default, Vcompleting_read_function):
2559 Move to minibuffer.el.
2560
85fece3e
PE
25612011-06-22 Paul Eggert <eggert@cs.ucla.edu>
2562
20b84ce9 2563 Fixes for GLYPH_DEBUG found by GCC 4.6.0 static checking.
85fece3e
PE
2564 The following patches are for when GLYPH_DEBUG && !XASSERT.
2565 * dispextern.h (trace_redisplay_p, dump_glyph_string):
2566 * dispnew.c (flush_stdout):
2567 * xdisp.c (dump_glyph_row, dump_glyph_matrix, dump_glyph):
2568 Mark as externally visible.
2569 * dispnew.c (check_window_matrix_pointers): Now static.
2570 * dispnew.c (window_to_frame_vpos):
2571 * xfns.c (unwind_create_frame):
2572 * xterm.c (x_check_font): Remove unused local.
2573 * scroll.c (CHECK_BOUNDS):
2574 * xfaces.c (cache_fache): Rename local to avoid shadowing.
2575 * xfns.c, w32fns.c (image_cache_refcount, dpyinfo_refcount): Now static.
2576 * xdisp.c (check_window_end): Now a no-op if !XASSERTS.
2577 (debug_first_unchanged_at_end_vpos, debug_last_unchanged_at_beg_vpos)
2578 (debug_dvpos, debug_dy, debug_delta, debug_delta_bytes, debug_end_vpos):
2579 Now static.
2580 (debug_method_add): Use va_list and vsprintf rather than relying
2581 on undefined behavior with wrong number of arguments.
2582 (dump_glyph, dump_glyph_row, Fdump_glyph_matrix):
2583 Don't assume ptrdiff_t and EMACS_INT are the same width as int.
2584 In this code, it's OK to assume C99 behavior for ptrdiff_t formats
2585 since we're not interested in debugging glyphs with old libraries.
2586 * xfaces.c (cache_face): Move debugging code earlier; this pacifies
2587 GCC 4.6.0's static checking.
2588
0766b489
PE
25892011-06-22 Paul Eggert <eggert@cs.ucla.edu>
2590
31fd4b32
PE
2591 Integer overflow and signedness fixes (Bug#8873).
2592 A few related buffer overrun fixes, too.
2593
b79e8648
PE
2594 * font.c (font_score): Use EMACS_INT, not int, to store XINT value.
2595
0766b489
PE
2596 * dispextern.h (struct face.stipple):
2597 * image.c (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
2598 (x_bitmap_mask, x_allocate_bitmap_record)
2599 (x_create_bitmap_from_data, x_create_bitmap_from_file)
2600 (x_destroy_bitmap, x_destroy_all_bitmaps, x_create_bitmap_mask)
2601 (x_create_bitmap_from_xpm_data):
2602 * nsterm.h (struct ns_display_info.bitmaps_size, .bitmaps_last):
2603 * w32term.h (struct w32_display_info.icon_bitmap_id, .bitmaps_size)
2604 (.bitmaps_last):
2605 * xfaces.c (load_pixmap):
2606 * xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap):
2607 * xterm.h (struct x_display_info.icon_bitmap_id, .bitmaps_size)
2608 (.bitmaps_last, struct x_output.icon_bitmap):
2609 Use ptrdiff_t, not int, for bitmap indexes.
2610 (x_allocate_bitmap_record): Check for size overflow.
2611 * dispextern.h, lisp.h: Adjust to API changes elsewhere.
2612
b081724f
PE
2613 Use ptrdiff_t, not int, for overlay counts.
2614 * buffer.h (overlays_at, sort_overlays, GET_OVERLAYS_AT):
2615 * editfns.c (overlays_around, get_pos_property):
2616 * textprop.c (get_char_property_and_overlay):
2617 * xdisp.c (next_overlay_change, note_mouse_highlight):
2618 * xfaces.c (face_at_buffer_position):
21514da7
PE
2619 * buffer.c (OVERLAY_COUNT_MAX): New macro.
2620 (overlays_at, overlays_in, sort_overlays, Foverlays_at)
2621 (Fnext_overlay_change, Fprevious_overlay_change)
2622 (mouse_face_overlay_overlaps, Foverlays_in):
b081724f 2623 Use ptrdiff_t, not int, for sizes.
21514da7 2624 (overlays_at, overlays_in): Check for size-calculation overflow.
b081724f 2625
3de73e5e
PE
2626 * xterm.c (xim_initialize, same_x_server): Strlen may not fit in int.
2627
2606c57b
PE
2628 * xsmfns.c (smc_save_yourself_CB, x_session_initialize): Avoid strlen.
2629 (x_session_initialize): Do not assume string length fits in int.
2630
aaafe47a
PE
2631 * xsettings.c (apply_xft_settings): Fix potential buffer overrun.
2632 This is unlikely, but can occur if DPI is outlandish.
2633
2674ddc8 2634 * xsettings.c (Ffont_get_system_normal_font, Ffont_get_system_font):
3a5077c5
PE
2635 * xselect.c (Fx_get_atom_name): Avoid need for strlen.
2636
28154962
PE
2637 * xrdb.c: Don't assume strlen fits in int; avoid some strlens.
2638 * xrdb.c (magic_file_p, search_magic_path):
2639 Omit last arg SUFFIX; it was always 0. All callers changed.
2640 (magic_file_p): Use ptrdiff_t, not int. Check for size overflow.
2641
7de51af5
PE
2642 * xfont.c (xfont_match): Avoid need for strlen.
2643
25ed6cc3
PE
2644 * xfns.c: Don't assume strlen fits in int.
2645 (xic_create_fontsetname, x_window): Use ptrdiff_t, not int.
2646
4eab31dd
PE
2647 * xdisp.c (message_log_check_duplicate): Return intmax_t,
2648 not unsigned long, as we prefer signed integers. All callers changed.
2649 Detect integer overflow in repeat count.
2650 (message_dolog): Don't assume print length fits in 39 bytes.
df1f27af 2651 (display_mode_element): Don't assume strlen fits in int.
4eab31dd 2652
171e2a58
PE
2653 * termcap.c: Don't assume sizes fit in int and never overflow.
2654 (struct termcap_buffer, tgetent): Use ptrdiff_t, not int, for sizes.
2655 (gobble_line): Check for size-calculation overflow.
2656
ad39faca 2657 * minibuf.c (Fread_buffer):
6e5bb2dc 2658 * lread.c (intern, intern_c_string):
74ca2eb3
PE
2659 * image.c (xpm_scan) [HAVE_NS && !HAVE_XPM]:
2660 Don't assume string length fits in int.
2661
52c61c22 2662 * keyboard.c (parse_tool_bar_item):
9bda3520
PE
2663 * gtkutil.c (style_changed_cb): Avoid need for strlen.
2664
b5b8c9e5
PE
2665 * font.c: Don't assume string length fits in int.
2666 (font_parse_xlfd, font_parse_fcname, font_unparse_fcname):
2667 Use ptrdiff_t, not int.
ccd6111c
PE
2668 (font_intern_prop): Don't assume string length fits in int.
2669 Don't assume integer property fits in fixnum.
2670 * font.h (font_intern_prop): 2nd arg is now ptrdiff_t, not int.
b5b8c9e5 2671
882f0d81 2672 * filelock.c: Fix some buffer overrun and integer overflow issues.
51cab52b 2673 (get_boot_time): Don't assume gzip command string fits in 100 bytes.
882f0d81
PE
2674 Reformulate so as not to need the command string.
2675 Invoke gzip -cd rather than gunzip, as it's more portable.
2676 (lock_info_type, lock_file_1, lock_file):
2677 Don't assume pid_t and time_t fit in unsigned long.
2678 (LOCK_PID_MAX): Remove; we now use more-reliable bounds.
2679 (current_lock_owner): Prefer signed type for sizes.
2680 Use memcpy, not strncpy, where memcpy is what is really wanted.
2681 Don't assume (via atoi) that time_t and pid_t fit in int.
2682 Check for time_t and/or pid_t out of range, e.g., via a network share.
2683 Don't alloca where an auto var works fine.
2684
93f4cf88
PE
2685 * fileio.c: Fix some integer overflow issues.
2686 (file_name_as_directory, Fexpand_file_name, Fsubstitute_in_file_name):
2687 Don't assume string length fits in int.
2688 (directory_file_name): Don't assume string length fits in long.
2689 (make_temp_name): Don't assume pid fits in int, or that its print
2690 length is less than 20.
2691
f3e92b69
PE
2692 * data.c (Fsubr_name): Rewrite to avoid a strlen call.
2693
1bfdaf10
PE
2694 * coding.c (make_subsidiaries): Don't assume string length fits in int.
2695
35016e9a
PE
2696 * callproc.c (child_setup): Rewrite to avoid two strlen calls.
2697
3d1e65a1
PE
2698 * process.c (Fformat_network_address): Use EMACS_INT, not EMACS_UINT.
2699 We prefer signed integers, even for size calculations.
2700
0b963a93
PE
2701 * emacs.c: Don't assume string length fits in 'int'.
2702 (DEFINE_DUMMY_FUNCTION, sort_args): Use ptrdiff_t, not int.
2703 (main): Don't invoke strlen when not needed.
2704
573f4b54
PE
2705 * dbusbind.c (XD_ERROR): Don't arbitrarily truncate string.
2706 (XD_DEBUG_MESSAGE): Don't waste a byte.
2707
989f33ba
PE
2708 * callproc.c (getenv_internal_1, getenv_internal)
2709 (Fgetenv_internal):
965d34eb
PE
2710 * buffer.c (init_buffer): Don't assume string length fits in 'int'.
2711
e4d29b33
PE
2712 * lread.c (invalid_syntax): Omit length argument.
2713 All uses changed. This doesn't fix a bug, but it simplifies the
2714 code away from its former Hollerith-constant appearance, and it's
2715 one less 'int' to worry about when looking at integer-overflow issues.
51cab52b 2716 (string_to_number): Simplify 2011-04-26 change by invoking xsignal1.
e4d29b33 2717
eb49b136
PE
2718 * lisp.h (DEFUN): Remove bogus use of sizeof (struct Lisp_Subr).
2719 This didn't break anything, but it didn't help either.
2720 It's confusing to put a bogus integer in a place where the actual
2721 value does not matter.
9f62aeb1 2722 (LIST_END_P): Remove unused macro and its bogus comment.
cbeff735 2723 (make_fixnum_or_float): Remove unnecessary cast to EMACS_INT.
eb49b136 2724
15375a22
PE
2725 * lisp.h (union Lisp_Object.i): EMACS_INT, not EMACS_UINT.
2726 This is for consistency with the ordinary, non-USE_LISP_UNION_TYPE,
2727 implementation.
b61cc01c
PE
2728 (struct Lisp_Bool_Vector.size): EMACS_INT, not EMACS_UINT.
2729 We prefer signed types, and the value cannot exceed the EMACS_INT
2730 range anyway (because otherwise the length would not be representable).
9a8e8d9b
PE
2731 (XSET) [USE_LISP_UNION_TYPE]: Use uintptr_t and intptr_t,
2732 not EMACS_UINT and EMACS_INT, when converting pointer to integer.
2733 This avoids a GCC warning when WIDE_EMACS_INT.
15375a22 2734
53b2623d
PE
2735 * indent.c (sane_tab_width): New function.
2736 (current_column, scan_for_column, Findent_to, position_indentation)
2737 (compute_motion): Use it. This is just for clarity.
8fcaf9cc 2738 (Fcompute_motion): Don't assume hscroll and tab offset fit in int.
53b2623d 2739
51cab52b 2740 * image.c (xbm_image_p): Don't assume stated width, height fit in int.
45aebb64 2741
f2ed8a70
PE
2742 * lisp.h (lint_assume): New macro.
2743 * composite.c (composition_gstring_put_cache):
2744 * ftfont.c (ftfont_shape_by_flt): Use it to pacify GCC 4.6.0.
2745
abe80cc6
PE
2746 * editfns.c, insdel.c:
2747 Omit unnecessary forward decls, to simplify future changes.
a9e860e1 2748
b02c740e
PE
2749 * ftfont.c (ftfont_shape_by_flt): Use signed integers for lengths.
2750
ebc96716
PE
2751 * font.c (Ffont_shape_gstring): Don't assume glyph len fits in 'int'.
2752
b4e50fa0 2753 * fns.c (Ffillarray): Don't assume bool vector size fits in 'int'.
f03dc6ef 2754 Use much-faster test for byte-length change.
311d5d7c 2755 Don't assume string byte-length fits in 'int'.
a4cf38e4 2756 Check that character arg fits in 'int'.
85461888 2757 (mapcar1): Declare byte as byte, for clarity.
b4e50fa0 2758
c0c1ee9f
PE
2759 * alloc.c (Fmake_bool_vector): Avoid unnecessary multiplication.
2760
a498d7f4
PE
2761 * fns.c (concat): Catch string overflow earlier.
2762 Do not rely on integer wraparound.
2763
51cab52b
PE
2764 * dispextern.h (struct it.overlay_strings_charpos)
2765 (struct it.selective): Now EMACS_INT, not int.
87830974
PE
2766 * xdisp.c (forward_to_next_line_start)
2767 (back_to_previous_visible_line_start)
2768 (reseat_at_next_visible_line_start, next_element_from_buffer):
2769 Don't arbitrarily truncate the value of 'selective' to int.
2770
76031fad
PE
2771 * xdisp.c (init_iterator): Use XINT, not XFASTINT; it might be < 0.
2772
5eb55db9
PE
2773 * composite.c: Don't truncate sizes to 'int'.
2774 (composition_gstring_p, composition_reseat_it)
2775 (composition_adjust_point): Use EMACS_INT, not int.
7d100a81
PE
2776 (get_composition_id, composition_gstring_put_cache): Use EMACS_INT,
2777 not EMACS_UINT, for indexes.
5eb55db9 2778
0703a717
PE
2779 * category.h (CATEGORY_SET_P): Remove unnecessary cast to EMACS_INT.
2780
d6202519
PE
2781 * buffer.c: Include <verify.h>.
2782 (struct sortvec.priority, struct sortstr.priority):
8961a454 2783 Now EMACS_INT, not int.
c20998a7 2784 (compare_overlays, cmp_for_strings): Avoid subtraction overflow.
67c36fce
PE
2785 (struct sortstr.size, record_overlay_string)
2786 (struct sortstrlist.size, struct sortlist.used):
2787 Don't truncate size to int.
2788 (record_overlay_string): Check for size-calculation overflow.
d6202519 2789 (init_buffer_once): Check at compile-time, not run-time.
fadf4e30 2790
d5a19415
JM
27912011-06-22 Jim Meyering <meyering@redhat.com>
2792
029529ac 2793 Don't leak an XBM-image-sized buffer
d5a19415
JM
2794 * image.c (xbm_load): Free the image buffer after using it.
2795
a9041e6c
PE
27962011-06-21 Paul Eggert <eggert@cs.ucla.edu>
2797
2798 Port to Sun C.
2799 * composite.c (find_automatic_composition): Omit needless 'return 0;'
2800 that Sun C diagnosed.
2801 * fns.c (secure_hash): Fix pointer signedness issue.
2802 * intervals.c (static_offset_intervals): New function.
2803 (offset_intervals): Use it.
2804
7f3f739f
LL
28052011-06-21 Leo Liu <sdl.web@gmail.com>
2806
2807 * deps.mk (fns.o):
2808 * makefile.w32-in ($(BLD)/fns.$(O)): Include sha256.h and
2809 sha512.h.
2810
2811 * fns.c (secure_hash): Rename from crypto_hash_function and change
2812 the first arg to accept symbols.
5b66d427 2813 (Fsecure_hash): New primitive.
7f3f739f
LL
2814 (syms_of_fns): New symbols.
2815
76147d94
DD
28162011-06-20 Deniz Dogan <deniz@dogan.se>
2817
2818 * process.c (Fset_process_buffer): Clarify return value in
2819 docstring.
2820
7d7d0045
CY
28212011-06-18 Chong Yidong <cyd@stupidchicken.com>
2822
2823 * dispnew.c (add_window_display_history): Use BVAR.
2824
2825 * xdisp.c (debug_method_add): Use BVAR.
2826 (check_window_end, dump_glyph_matrix, dump_glyph)
2827 (dump_glyph_row, dump_glyph_string): Convert arglist to ANSI C.
2828
2829 * xfaces.c (check_lface_attrs, check_lface, dump_realized_face):
2830 Likewise.
2831
2832 * xfns.c (Fx_create_frame, x_create_tip_frame): Delay image cache
2833 check till after the cache is created in init_frame_faces.
2834
ff2bc410
SM
28352011-06-17 Stefan Monnier <monnier@iro.umontreal.ca>
2836
2837 * fns.c (Fsafe_length): Yet another int/Lisp_Object mixup.
2838
28177add
PE
28392011-06-16 Paul Eggert <eggert@cs.ucla.edu>
2840
dd3482fe
PE
2841 * lisp.h: Include <limits.h>, for INT_MAX, LONG_MAX, LLONG_MAX.
2842 Without this, prin1 mishandles Lisp_Misc_Save_Value printing on
2843 hosts with pre-C99 libraries, because pD is wrongly defined to "t".
2844
393d71f3 2845 Improve buffer-overflow checking (Bug#8873).
1c8e352f
PE
2846 * fileio.c (Finsert_file_contents):
2847 * insdel.c (insert_from_buffer_1, replace_range, replace_range_2):
2848 Remove the old (too-loose) buffer overflow checks.
2849 They weren't needed, since make_gap checks for buffer overflow.
2850 * insdel.c (make_gap_larger): Catch buffer overflows that were missed.
2851 The old code merely checked for Emacs fixnum overflow, and relied
2852 on undefined (wraparound) behavior. The new code avoids undefined
2853 behavior, and also checks for ptrdiff_t and/or size_t overflow.
2854
2e6813b0 2855 * editfns.c (Finsert_char): Don't dump core with very negative counts.
21d890a4
PE
2856 Tune. Don't use wider integers than needed. Don't use alloca.
2857 Use a bigger 'string' buffer. Rewrite to avoid 'n > 0' test.
2e6813b0 2858
599a9e4f
PE
2859 * insdel.c (replace_range): Fix buf overflow when insbytes < outgoing.
2860
99561444
PE
2861 * insdel.c, lisp.h (buffer_overflow): New function.
2862 (insert_from_buffer_1, replace_range, replace_range_2):
2863 * insdel.c (make_gap_larger):
2864 * editfns.c (Finsert_char):
2865 * fileio.c (Finsert_file_contents): Use it, to normalize wording.
2866
28177add
PE
2867 * buffer.h (BUF_BYTES_MAX): Cast to ptrdiff_t so that it's signed.
2868
e69dafad
PE
28692011-06-15 Paul Eggert <eggert@cs.ucla.edu>
2870
a7af7fde 2871 Integer overflow and signedness fixes (Bug#8873).
ff672d2c 2872
b1c46f02
PE
2873 * ccl.c (ASCENDING_ORDER): New macro, to work around GCC bug 43772.
2874 (GET_CCL_RANGE, IN_INT_RANGE): Use it.
2875
e69dafad
PE
2876 * fileio.c: Don't assume EMACS_INT fits in off_t.
2877 (emacs_lseek): New static function.
2878 (Finsert_file_contents, Fwrite_region): Use it.
2879 Use SEEK_SET, SEEK_CUR, SEEK_END as appropriate.
2880
566684ea
PE
2881 * fns.c (Fload_average): Don't assume 100 * load average fits in int.
2882
e6966cd6
PE
2883 * fns.c: Don't overflow int when computing a list length.
2884 * fns.c (QUIT_COUNT_HEURISTIC): New constant.
2885 (Flength, Fsafe_length): Use EMACS_INT, not int, to avoid unwanted
2886 truncation on 64-bit hosts. Check for QUIT every
2887 QUIT_COUNT_HEURISTIC entries rather than every other entry; that's
2888 faster and is responsive enough.
2889 (Flength): Report an error instead of overflowing an integer.
2890 (Fsafe_length): Return a float if the value is not representable
2891 as a fixnum. This shouldn't happen except in contrived situations.
6346d301 2892 (Fnthcdr, Fsort): Don't assume list length fits in int.
de41a810 2893 (Fcopy_sequence): Don't assume vector length fits in int.
00c604f2 2894
dd0b0efb
PE
2895 * alloc.c: Check that resized vectors' lengths fit in fixnums.
2896 (header_size, word_size): New constants.
2897 (allocate_vectorlike): Don't check size overflow here.
2898 (allocate_vector): Check it here instead, since this is the only
2899 caller of allocate_vectorlike that could cause overflow.
2900 Check that the new vector's length is representable as a fixnum.
2901
86fe5cfe
PE
2902 * fns.c (next_almost_prime): Don't return a multiple of 3 or 5.
2903 The previous code was bogus. For example, next_almost_prime (32)
2904 returned 39, which is undesirable as it is a multiple of 3; and
2905 next_almost_prime (24) returned 25, which is a multiple of 5 so
2906 why was the code bothering to check for multiples of 7?
2907
80e88859
PE
2908 * bytecode.c (exec_byte_code): Use ptrdiff_t, not int, for vector length.
2909
4a2f0ad6
PE
2910 * eval.c, doprnt.c (SIZE_MAX): Remove; inttypes.h defines this now.
2911
f66c7cf8
PE
2912 Variadic C functions now count arguments with ptrdiff_t.
2913 This partly undoes my 2011-03-30 change, which replaced int with size_t.
2914 Back then I didn't know that the Emacs coding style prefers signed int.
2915 Also, in the meantime I found a few more instances where arguments
4a2f0ad6
PE
2916 were being counted with int, which may truncate counts on 64-bit
2917 machines, or EMACS_INT, which may be unnecessarily wide.
f66c7cf8
PE
2918 * lisp.h (struct Lisp_Subr.function.aMANY)
2919 (DEFUN_ARGS_MANY, internal_condition_case_n, safe_call):
2920 Arg counts are now ptrdiff_t, not size_t.
2921 All variadic functions and their callers changed accordingly.
2922 (struct gcpro.nvars): Now size_t, not size_t. All uses changed.
2923 * bytecode.c (exec_byte_code): Check maxdepth for overflow,
2924 to avoid potential buffer overrun. Don't assume arg counts fit in 'int'.
2925 * callint.c (Fcall_interactively): Check arg count for overflow,
2926 to avoid potential buffer overrun. Use signed char, not 'int',
2927 for 'varies' array, so that we needn't bother to check its size
2928 calculation for overflow.
2929 * editfns.c (Fformat): Use ptrdiff_t, not EMACS_INT, to count args.
2930 * eval.c (apply_lambda):
2931 * fns.c (Fmapconcat): Use XFASTINT, not XINT, to get args length.
2932 (struct textprop_rec.argnum): Now ptrdiff_t, not int. All uses changed.
2933 (mapconcat): Use ptrdiff_t, not int and EMACS_INT, to count args.
2934
a1759b76
PE
2935 * callint.c (Fcall_interactively): Don't use index var as event count.
2936
d96be9fc
PE
2937 * vm-limit.c (check_memory_limits): Fix incorrect extern function decls.
2938 * mem-limits.h (SIZE): Remove; no longer used.
2939
a690a978 2940 * xterm.c (x_alloc_nearest_color_1): Prefer int to long when int works.
5efd304b 2941
578c21e6
PE
2942 Remove unnecessary casts.
2943 * xterm.c (x_term_init):
2944 * xfns.c (x_set_border_pixel):
2945 * widget.c (create_frame_gcs): Remove casts to unsigned long etc.
2946 These aren't needed now that we assume ANSI C.
2947
96f53c6c
PE
2948 * sound.c (Fplay_sound_internal): Remove cast to unsigned long.
2949 It's more likely to cause problems (due to unsigned overflow)
2950 than to cure them.
2951
83c77d31
PE
2952 * dired.c (Ffile_attributes): Don't use 32-bit hack on 64-bit hosts.
2953
ee2079f1
PE
2954 * unexelf.c (unexec): Don't assume BSS addr fits in unsigned.
2955
6da65536
PE
2956 * xterm.c (handle_one_xevent): Omit unnecessary casts to unsigned.
2957
7147c4a4
PE
2958 * keyboard.c (modify_event_symbol): Don't limit alist len to UINT_MAX.
2959
193e32d9
PE
2960 * lisp.h (CHAR_TABLE_SET): Omit now-redundant test.
2961
e5533da6
PE
2962 * lread.c (Fload): Don't compare a possibly-garbage time_t value.
2963
9910e595
PE
2964 GLYPH_CODE_FACE returns EMACS_INT, not int.
2965 * dispextern.h (merge_faces):
2966 * xfaces.c (merge_faces):
01103c44
PE
2967 * xdisp.c (get_next_display_element, next_element_from_display_vector):
2968 Don't assume EMACS_INT fits in int.
9910e595 2969
2638320e
PE
2970 * character.h (CHAR_VALID_P): Remove unused parameter.
2971 * fontset.c, lisp.h, xdisp.c: All uses changed.
2972
045eb8d9
PE
2973 * editfns.c (Ftranslate_region_internal): Omit redundant test.
2974
c1f134b5
PE
2975 * fns.c (concat): Minor tuning based on overflow analysis.
2976 This doesn't fix any bugs. Use int to hold character, instead
2977 of constantly refetching from Emacs object. Use XFASTINT, not
2978 XINT, for value known to be a character. Don't bother comparing
2979 a single byte to 0400, as it's always less.
2980
395fcb93 2981 * floatfns.c (Fexpt):
327eeec8
PE
2982 * fileio.c (make_temp_name): Omit unnecessary cast to unsigned.
2983
abbd3d23
PE
2984 * editfns.c (Ftranslate_region_internal): Use int, not EMACS_INT
2985 for characters.
2986
684a03ef
PE
2987 * doc.c (get_doc_string): Omit (unsigned)c that mishandled negatives.
2988
0fed43f3
PE
2989 * data.c (Faset): If ARRAY is a string, check that NEWELT is a char.
2990 Without this fix, on a 64-bit host (aset S 0 4294967386) would
2991 incorrectly succeed when S was a string, because 4294967386 was
2992 truncated before it was used.
2993
8fd02eb7
PE
2994 * chartab.c (Fchar_table_range): Use CHARACTERP to check range.
2995 Otherwise, an out-of-range integer could cause undefined behavior
2996 on a 64-bit host.
2997
f8c86b69
PE
2998 * composite.c: Use int, not EMACS_INT, for characters.
2999 (fill_gstring_body, composition_compute_stop_pos): Use int, not
3000 EMACS_INT, for values that are known to be in character range.
3001 This doesn't fix any bugs but is the usual style inside Emacs and
3002 may generate better code on 32-bit machines.
3003
34206dd2
PE
3004 Make sure a 64-bit char is never passed to ENCODE_CHAR.
3005 This is for reasons similar to the recent CHAR_STRING fix.
3006 * charset.c (Fencode_char): Check that character arg is actually
3007 a character. Pass an int to ENCODE_CHAR.
3008 * charset.h (ENCODE_CHAR): Verify that the character argument is no
3009 wider than 'int', as a compile-time check to prevent future regressions
3010 in this area.
3011
c5958d4c 3012 * character.c (char_string): Remove unnecessary casts.
13bdea59
PE
3013
3014 Make sure a 64-bit char is never passed to CHAR_STRING.
3015 Otherwise, CHAR_STRING would do the wrong thing on a 64-bit platform,
3016 by silently ignoring the top 32 bits, allowing some values
3017 that were far too large to be valid characters.
3018 * character.h: Include <verify.h>.
3019 (CHAR_STRING, CHAR_STRING_ADVANCE): Verify that the character
3020 arguments are no wider than unsigned, as a compile-time check
3021 to prevent future regressions in this area.
3022 * data.c (Faset):
01103c44 3023 * editfns.c (Fchar_to_string, general_insert_function, Finsert_char)
13bdea59
PE
3024 (Fsubst_char_in_region):
3025 * fns.c (concat):
3026 * xdisp.c (decode_mode_spec_coding):
3027 Adjust to CHAR_STRING's new requirement.
3028 * editfns.c (Finsert_char, Fsubst_char_in_region):
3029 * fns.c (concat): Check that character args are actually
3030 characters. Without this test, these functions did the wrong
3031 thing with wildly out-of-range values on 64-bit hosts.
3032
d37ca623
PE
3033 Remove incorrect casts to 'unsigned' that lose info on 64-bit hosts.
3034 These casts should not be needed on 32-bit hosts, either.
3035 * keyboard.c (read_char):
3036 * lread.c (Fload): Remove casts to unsigned.
3037
ea204efb
PE
3038 * lisp.h (UNSIGNED_CMP): New macro.
3039 This fixes comparison bugs on 64-bit hosts.
3040 (ASCII_CHAR_P): Use it.
3041 * casefiddle.c (casify_object):
01103c44 3042 * character.h (ASCII_BYTE_P, CHAR_VALID_P)
ea204efb
PE
3043 (SINGLE_BYTE_CHAR_P, CHAR_STRING):
3044 * composite.h (COMPOSITION_ENCODE_RULE_VALID):
3045 * dispextern.h (FACE_FROM_ID):
3046 * keyboard.c (read_char): Use UNSIGNED_CMP.
3047
41cb286c
PE
3048 * xmenu.c (dialog_selection_callback) [!USE_GTK]: Cast to intptr_t,
3049 not to EMACS_INT, to avoid GCC warning.
3050
4a1b9832
PE
3051 * xfns.c (x_set_scroll_bar_default_width): Remove unused 'int' locals.
3052
55daad71
PE
3053 * buffer.h (PTR_BYTE_POS, BUF_PTR_BYTE_POS): Remove harmful cast.
3054 The cast incorrectly truncated 64-bit byte offsets to 32 bits, and
3055 isn't needed on 32-bit machines.
8f95c75c 3056
01103c44
PE
3057 * buffer.c (Fgenerate_new_buffer_name):
3058 Use EMACS_INT for count, not int.
0ceccced 3059 (advance_to_char_boundary): Return EMACS_INT, not int.
e762cafe
PE
3060
3061 * data.c (Qcompiled_function): Now static.
3062
c6f072e7
PE
3063 * window.c (window_body_lines): Now static.
3064
20ce5912
PE
3065 * image.c (gif_load): Rename local to avoid shadowing.
3066
9c4c5f81
PE
3067 * lisp.h (SAFE_ALLOCA_LISP): Check for integer overflow.
3068 (struct Lisp_Save_Value): Use ptrdiff_t, not int, for 'integer' member.
3069 * alloc.c (make_save_value): Integer argument is now of type
3070 ptrdiff_t, not int.
3071 (mark_object): Use ptrdiff_t, not int.
3072 * lisp.h (pD): New macro.
3073 * print.c (print_object): Use it.
3074
c0c5c8ae
PE
3075 * alloc.c: Use EMACS_INT, not int, to count objects.
3076 (total_conses, total_markers, total_symbols, total_vector_size)
3077 (total_free_conses, total_free_markers, total_free_symbols)
01103c44
PE
3078 (total_free_floats, total_floats, total_free_intervals)
3079 (total_intervals, total_strings, total_free_strings):
c0c5c8ae
PE
3080 Now EMACS_INT, not int. All uses changed.
3081 (Fgarbage_collect): Compute overall total using a double, so that
3082 integer overflow is less likely to be a problem. Check for overflow
3083 when converting back to an integer.
5a25e253
PE
3084 (n_interval_blocks, n_string_blocks, n_float_blocks, n_cons_blocks)
3085 (n_vectors, n_symbol_blocks, n_marker_blocks): Remove.
3086 These were 'int' variables that could overflow on 64-bit hosts;
3087 they were never used, so remove them instead of repairing them.
211a0b2a 3088 (nzombies, ngcs, max_live, max_zombies): Now EMACS_INT, not 'int'.
6349ae4d
PE
3089 (inhibit_garbage_collection): Set gc_cons_threshold to max value.
3090 Previously, this ceilinged at INT_MAX, but that doesn't work on
3091 64-bit machines.
e46bb31a 3092 (allocate_pseudovector): Don't use EMACS_INT when int would do.
c0c5c8ae 3093
c78baabf 3094 * alloc.c (Fmake_bool_vector): Don't assume vector size fits in int.
86f61a15 3095 (allocate_vectorlike): Check for ptrdiff_t overflow.
b6439961
PE
3096 (mark_vectorlike, mark_char_table, mark_object): Avoid EMACS_UINT
3097 when a (possibly-narrower) signed value would do just as well.
3098 We prefer using signed arithmetic, to avoid comparison confusion.
c78baabf 3099
c9d624c6
PE
3100 * alloc.c: Catch some string size overflows that we were missing.
3101 (XMALLOC_OVERRUN_CHECK_SIZE) [!XMALLOC_OVERRUN_CHECK]: Define to 0,
3102 for convenience in STRING_BYTES_MAX.
3103 (STRING_BYTES_MAX): New macro, superseding the old one in lisp.h.
3104 The definition here is exact; the one in lisp.h was approximate.
3105 (allocate_string_data): Check for string overflow. This catches
3106 some instances we weren't catching before. Also, it catches
3107 size_t overflow on (unusual) hosts where SIZE_MAX <= min
3108 (PTRDIFF_MAX, MOST_POSITIVE_FIXNUM), e.g., when size_t is 32 bits
3109 and ptrdiff_t and EMACS_INT are both 64 bits.
c78baabf 3110
c9d624c6
PE
3111 * character.c, coding.c, doprnt.c, editfns.c, eval.c:
3112 All uses of STRING_BYTES_MAX replaced by STRING_BYTES_BOUND.
640c8776 3113 * lisp.h (STRING_BYTES_BOUND): Rename from STRING_BYTES_MAX.
c9d624c6 3114
353032ce
PE
3115 * character.c (string_escape_byte8): Fix nbytes/nchars typo.
3116
2bccce07
PE
3117 * alloc.c (Fmake_string): Check for out-of-range init.
3118
0ac30604
SM
31192011-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
3120
3121 * eval.c (Fdefvaralias): Also mark the target as variable-special-p.
3122
c195f2de
JD
31232011-06-14 Jan Djärv <jan.h.d@swipnet.se>
3124
3125 * xfns.c (x_set_scroll_bar_default_width): Remove argument to
3126 xg_get_default_scrollbar_width.
3127
3128 * gtkutil.c: Include emacsgtkfixed.h if HAVE_GTK3.
3129 (int_gtk_range_get_value): Move to the scroll bar part of the file.
3130 (style_changed_cb): Call update_theme_scrollbar_width and call
3131 x_set_scroll_bar_default_width and xg_frame_set_char_size for
3132 all frames (Bug#8505).
3133 (xg_create_frame_widgets): Call emacs_fixed_new if HAVE_GTK3 (Bug#8505).
3134 Call gtk_window_set_resizable if HAVE_GTK3.
3135 (x_wm_set_size_hint): Call emacs_fixed_set_min_size with min width
3136 and height if HAVE_GTK3 (Bug#8505).
3137 (scroll_bar_width_for_theme): New variable.
3138 (update_theme_scrollbar_width): New function.
3139 (xg_get_default_scrollbar_width): Move code to
3140 update_theme_scrollbar_width, just return scroll_bar_width_for_theme.
3141 (xg_initialize): Call update_theme_scrollbar_width.
3142
3143 * gtkutil.h (xg_get_default_scrollbar_width): Remove argument.
3144
3145 * emacsgtkfixed.c, emacsgtkfixed.h: New files.
3146
e10ac9f1
MR
31472011-06-12 Martin Rudalics <rudalics@gmx.at>
3148
3149 * frame.c (make_frame): Call other_buffer_safely instead of
3150 other_buffer.
3151
3152 * window.c (temp_output_buffer_show): Call display_buffer with
3153 second argument Vtemp_buffer_show_specifiers and reset latter
3154 immediately after the call.
3155 (Vtemp_buffer_show_specifiers): New variable.
3156 (auto_window_vscroll_p, next_screen_context_lines)
3157 (Vscroll_preserve_screen_position): Remove leading asterisks from
3158 doc-strings.
3159
2d3c217e 31602011-06-12 Paul Eggert <eggert@cs.ucla.edu>
4475bec4 3161
7b7f97e8 3162 Fix minor problems found by GCC 4.6.0 static checking.
4475bec4
PE
3163 * buffer.c (Qclone_number): Remove for now, as it's unused.
3164 (record_buffer, Funrecord_buffer): Rename local to avoid shadowing.
3165 (record_buffer): Remove unused local.
3166 * frame.c (other_visible_frames, frame_buffer_list): Now static.
3167 (set_frame_buffer_list): Remove; unused.
3168 * frame.h (other_visible_frames): Remove decl.
3169 * keyboard.h (menu_items_inuse): Declare only if USE_GTK || USE_MOTIF.
3170 * lisp.h (frame_buffer_list, set_frame_buffer_list): Remove decls.
3171 (add_gpm_wait_descriptor, delete_gpm_wait_descriptor): Declare only
3172 if HAVE_GPM.
3173 * menu.c (menu_items_inuse): Now static unless USE_GTK || USE_MOTIF.
3174 * process.c (add_gpm_wait_descriptor, delete_gpm_wait_descriptor):
3175 Define only if HAVE_GPM.
3176 * widget.c (EmacsFrameResize, emacsFrameClassRec): Now static.
3177 (update_hints_inhibit): Remove; never set. All uses removed.
3178 * widgetprv.h (emacsFrameClassRec): Remove decl.
3179 * window.c (delete_deletable_window): Now returns void, since it
3180 wasn't returning anything.
3181 (compare_window_configurations): Remove unused locals.
3182 * xfns.c (x_set_scroll_bar_default_width): Remove unused locals.
3183 * xmenu.c (x_menu_set_in_use): Define only if USE_GTK || USE_MOTIF.
4475bec4
PE
3184 (dialog_selection_callback) [!USE_GTK]: Prefer intptr_t for integers
3185 the same widths as pointers. This follows up on the 2011-05-06 patch.
3186 * xterm.c (x_alloc_lighter_color_for_widget): Define only if USE_LUCID.
3187 * xterm.h: Likewise.
3188 (x_menu_set_in_use): Declare only if USE_GTK || USE_MOTIF.
3189
1384b89e
JB
31902011-06-12 Juanma Barranquero <lekktu@gmail.com>
3191
3192 * makefile.w32-in: Update dependencies.
3193 (LISP_H): Add lib/intprops.h.
3194
1100a63c
CY
31952011-06-11 Chong Yidong <cyd@stupidchicken.com>
3196
3197 * image.c (gif_load): Add animation frame delay to the metadata.
3198 (syms_of_image): Use DEFSYM. New symbol `delay'.
3199
6198ccd0
MR
32002011-06-11 Martin Rudalics <rudalics@gmx.at>
3201
3202 * window.c (delete_deletable_window): Re-add.
3203 (Fset_window_configuration): Rewrite to handle dead buffers and
3204 consequently deletable windows.
3205 (window_tree, Fwindow_tree): Remove. Supply functionality in
3206 window.el.
3207 (compare_window_configurations): Simplify code.
3208
b6e3633c
AS
32092011-06-11 Andreas Schwab <schwab@linux-m68k.org>
3210
1ab0dee5
AS
3211 * image.c (imagemagick_load_image): Fix type mismatch.
3212 (Fimagemagick_types): Likewise.
3213
b6e3633c
AS
3214 * window.h (replace_buffer_in_windows): Declare.
3215
9397e56f
MR
32162011-06-11 Martin Rudalics <rudalics@gmx.at>
3217
3218 * buffer.c: New Lisp objects Qbuffer_list_update_hook and
3219 Qclone_number. Remove external declaration of Qdelete_window.
3220 (Fbuffer_list): Rewrite doc-string. Minor restructuring of
3221 code.
640c8776
SM
3222 (Fget_buffer_create, Fmake_indirect_buffer, Frename_buffer):
3223 Run Qbuffer_list_update_hook if allowed.
9397e56f
MR
3224 (Fother_buffer): Rewrite doc-string. Major rewrite for new
3225 buffer list implementation.
3226 (other_buffer_safely): New function.
3227 (Fkill_buffer): Replace call to replace_buffer_in_all_windows by
3228 calls to replace_buffer_in_windows and
3229 replace_buffer_in_windows_safely. Run Qbuffer_list_update_hook
3230 if allowed.
3231 (record_buffer): Inhibit quitting and rewrite using quittable
3232 functions. Run Qbuffer_list_update_hook if allowed.
3233 (Frecord_buffer, Funrecord_buffer): New functions.
640c8776
SM
3234 (switch_to_buffer_1, Fswitch_to_buffer): Remove.
3235 Move switch-to-buffer to window.el.
9397e56f
MR
3236 (bury-buffer): Move to window.el.
3237 (Vbuffer_list_update_hook): New variable.
3238
3239 * lisp.h (other_buffer_safely): Add prototype in buffer.c
3240 section.
3241
3242 * window.h (resize_frame_windows): Move up in code.
3243 (Fwindow_frame): Remove EXFUN.
3244 (replace_buffer_in_all_windows): Remove prototype.
3245 (replace_buffer_in_windows_safely): Add prototype.
3246
3247 * window.c: Declare Qdelete_window static again. Move down
3248 declaration of select_count.
3249 (Fnext_window, Fprevious_window): Rewrite doc-strings.
3250 (Fother_window): Move to window.el.
3251 (window_loop): Remove DELETE_BUFFER_WINDOWS and UNSHOW_BUFFER
3252 cases. Add REPLACE_BUFFER_IN_WINDOWS_SAFELY case.
3253 (Fdelete_windows_on, Freplace_buffer_in_windows): Move to
3254 window.el.
3255 (replace_buffer_in_windows): Implement by calling
3256 Qreplace_buffer_in_windows.
3257 (replace_buffer_in_all_windows): Remove with some functionality
3258 moved into replace_buffer_in_windows_safely.
3259 (replace_buffer_in_windows_safely): New function.
3260 (select_window_norecord, select_frame_norecord): Move in front
3261 of run_window_configuration_change_hook. Remove now obsolete
3262 declarations.
640c8776
SM
3263 (Fset_window_buffer): Rewrite doc-string.
3264 Call Qrecord_window_buffer.
9397e56f
MR
3265 (keys_of_window): Move binding for other-window to window.el.
3266
b50691aa
CY
32672011-06-11 Chong Yidong <cyd@stupidchicken.com>
3268
3269 * dispextern.h (struct image): Replace data member, whose int_val
3270 and ptr_val fields were not used by anything, with a single
3271 lisp_val object.
3272
3273 * image.c (Fimage_metadata, make_image, mark_image, tiff_load)
3274 (gif_clear_image, gif_load, imagemagick_load_image)
3275 (gs_clear_image, gs_load): Callers changed.
3276
3f754b86
PE
32772011-06-10 Paul Eggert <eggert@cs.ucla.edu>
3278
cca69397
PE
3279 * buffer.h: Include <time.h>, for time_t.
3280 Needed to build on FreeBSD 8.2. Problem reported by Herbert J. Skuhra.
3281
109e28d0
PE
3282 Fix minor problems found by static checking.
3283
60737f02
PE
3284 * image.c (PixelGetMagickColor): Declare if ImageMagick headers don't.
3285
4b66faf3
PE
3286 Make identifiers static if they are not used in other modules.
3287 * data.c (Qcompiled_function, Qframe, Qvector):
3288 * image.c (QimageMagick, Qsvg):
3289 * minibuf.c (Qmetadata):
3290 * window.c (resize_window_check, resize_root_window): Now static.
3291 * window.h (resize_window_check, resize_root_window): Remove decls.
3292
109e28d0
PE
3293 * window.c (window_deletion_count, delete_deletable_window):
3294 Remove; unused.
46a4ce9e
PE
3295 (window_body_lines): Now static.
3296 (Fdelete_other_windows_internal): Mark vars as initialized.
3297 Make sure 'resize_failed' is initialized.
3298 (run_window_configuration_change_hook): Rename local to avoid shadowing.
3299 (resize_window_apply): Remove unused local.
3300 * window.h (delete_deletable_window): Remove decl.
3301
109e28d0 3302 * image.c (gif_load, svg_load_image): Rename locals to avoid shadowing.
33290528
PE
3303 (imagemagick_load_image): Fix pointer signedness problem by changing
3304 last arg from unsigned char * to char *. All uses changed.
3305 Also, fix a local for similar reasons.
3306 Remove unused locals. Remove locals to avoid shadowing.
3307 (fn_rsvg_handle_free): Remove; unused.
3308 (svg_load, svg_load_image): Fix pointer signedness problem.
f7e13da3 3309 (imagemagick_load_image): Don't use garbage pointer image_wand.
33290528 3310
3f754b86
PE
3311 * ftfont.c (ftfont_get_metrics, ftfont_drive_otf): Remove unused locals.
3312
2547adb1
CY
33132011-06-10 Chong Yidong <cyd@stupidchicken.com>
3314
3315 * image.c (gif_load): Fix omitted cast error introduced by
3316 2011-06-06 change.
3317
2c8e37d4
MR
33182011-06-10 Martin Rudalics <rudalics@gmx.at>
3319
3320 * window.h (resize_proportionally, orig_total_lines)
3321 (orig_top_line): Remove from window structure.
3322 (set_window_height, set_window_width, change_window_heights)
3323 (Fdelete_window): Remove prototypes.
3324 (resize_frame_windows): Remove duplicate declaration.
3325
440a42e3
EZ
33262011-06-10 Eli Zaretskii <eliz@gnu.org>
3327
3328 * window.h (resize_frame_windows, resize_window_check)
3329 (delete_deletable_window, resize_root_window)
3330 (resize_frame_windows): Declare prototypes.
3331
3332 * window.c (resize_window_apply): Make definition be "static" to
3333 match the prototype.
3334
562dd5e9
MR
33352011-06-10 Martin Rudalics <rudalics@gmx.at>
3336
3337 * window.c: Remove declarations of Qwindow_size_fixed,
3338 window_min_size_1, window_min_size_2, window_min_size,
3339 size_window, window_fixed_size_p, enlarge_window, delete_window.
3340 Remove static from declaration of Qdelete_window, it's
3341 temporarily needed by Fbury_buffer.
3342 (replace_window): Don't assign orig_top_line and
3343 orig_total_lines.
3344 (Fdelete_window, delete_window): Remove. Window deletion is
3345 handled by window.el.
640c8776
SM
3346 (window_loop): Remove DELETE_OTHER_WINDOWS case.
3347 Replace Fdelete_window calls with calls to Qdelete_window.
562dd5e9
MR
3348 (Fdelete_other_windows): Remove. Deleting other windows is
3349 handled by window.el.
3350 (window_fixed_size_p): Remove. Fixed-sizeness of windows is
3351 handled in window.el.
3352 (window_min_size_2, window_min_size_1, window_min_size): Remove.
3353 Window minimum sizes are handled in window.el.
3354 (shrink_windows, size_window, set_window_height)
3355 (set_window_width, change_window_heights, window_height)
3356 (window_width, CURBEG, CURSIZE, enlarge_window)
3357 (adjust_window_trailing_edge, Fadjust_window_trailing_edge)
3358 (Fenlarge_window, Fshrink_window): Remove. Window resizing is
3359 handled in window.el.
3360 (make_dummy_parent): Rename to make_parent_window and give it a
3361 second argument horflag.
3362 (make_window): Don't set resize_proportionally any more.
3363 (Fsplit_window): Remove. Windows are split in window.el.
3364 (save_restore_action, save_restore_orig_size)
3365 (shrink_window_lowest_first, save_restore_orig_size): Remove.
3366 Resize mini windows in window.el.
3367 (grow_mini_window, shrink_mini_window): Implement by calling
3368 Qresize_root_window_vertically, resize_window_check and
3369 resize_window_apply.
640c8776
SM
3370 (saved_window, Fset_window_configuration, save_window_save):
3371 Do not handle orig_top_line, orig_total_lines, and
562dd5e9
MR
3372 resize_proportionally.
3373 (window_min_height, window_min_width): Move to window.el.
3374 (keys_of_window): Move bindings for delete-other-windows,
3375 split-window, delete-window and enlarge-window to window.el.
3376
3377 * buffer.c: Temporarily extern Qdelete_window.
3378 (Fbury_buffer): Temporarily call Qdelete_window instead of
3379 Fdelete_window (Fbury_buffer will move to window.el soon).
3380
3381 * frame.c (set_menu_bar_lines_1): Remove code handling
3382 orig_top_line and orig_total_lines.
3383
3384 * dispnew.c (adjust_frame_glyphs_initially): Don't use
3385 set_window_height but set heights directly.
3386 (change_frame_size_1): Use resize_frame_windows.
3387
3388 * xdisp.c (init_xdisp): Don't use set_window_height but set
3389 heights directly.
3390
640c8776
SM
3391 * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines):
3392 Use resize_frame_windows instead of change_window_heights and run
562dd5e9
MR
3393 run_window_configuration_change_hook.
3394
3395 * w32fns.c (x_set_tool_bar_lines): Use resize_frame_windows
3396 instead of change_window_heights and run
3397 run_window_configuration_change_hook.
3398
1a13852e
MR
33992011-06-09 Martin Rudalics <rudalics@gmx.at>
3400
3401 * window.c (replace_window): Rename second argument REPLACEMENT to
3402 NEW. New third argument SETFLAG. Rewrite.
3403 (delete_window, make_dummy_parent): Call replace_window with
3404 third argument 1.
3405 (window_list_1): Move down in code.
3406 (run_window_configuration_change_hook): Move set_buffer part
3407 before select_frame_norecord part in order to unwind correctly.
3408 Rename count1 to count.
3409 (recombine_windows, delete_deletable_window, resize_root_window)
3410 (Fdelete_other_windows_internal)
3411 (Frun_window_configuration_change_hook, make_parent_window)
3412 (resize_window_check, resize_window_apply, Fresize_window_apply)
3413 (resize_frame_windows, Fsplit_window_internal)
640c8776
SM
3414 (Fdelete_window_internal, Fresize_mini_window_internal):
3415 New functions.
1a13852e
MR
3416 (syms_of_window): New variables Vwindow_splits and Vwindow_nest.
3417
f3d1777e
MR
34182011-06-08 Martin Rudalics <rudalics@gmx.at>
3419
496e208e
MR
3420 * window.h (window): Add some new members to window structure -
3421 normal_lines, normal_cols, new_total, new_normal, clone_number,
3422 splits, nest, prev_buffers, next_buffers.
3423 (WINDOW_TOTAL_SIZE): Move here from window.c.
b9e809c2 3424 (MIN_SAFE_WINDOW_WIDTH, MIN_SAFE_WINDOW_HEIGHT): Define here.
496e208e 3425
f3d1777e
MR
3426 * window.c (Fwindow_height, Fwindow_width, Fwindow_full_width_p):
3427 Remove.
496e208e
MR
3428 (make_dummy_parent): Set new members of windows structure.
3429 (make_window): Move down in code. Handle new members of window
3430 structure.
3431 (Fwindow_clone_number, Fwindow_splits, Fset_window_splits)
3432 (Fwindow_nest, Fset_window_nest, Fwindow_new_total)
3433 (Fwindow_normal_size, Fwindow_new_normal, Fwindow_prev_buffers)
3434 (Fset_window_prev_buffers, Fwindow_next_buffers)
640c8776
SM
3435 (Fset_window_next_buffers, Fset_window_clone_number):
3436 New functions.
496e208e
MR
3437 (Fwindow_hscroll, Fwindow_at, Fwindow_point, Fwindow_start)
3438 (Fwindow_end, Fwindow_line_height, Fset_window_dedicated_p):
3439 Doc-string fixes.
3440 (Fwindow_parameters, Fwindow_parameter, Fset_window_parameter):
3441 Argument WINDOW can be now internal window too.
3442 (Fwindow_use_time): Move up in code.
3443 (Fget_buffer_window): Rename argument FRAME to ALL-FRAMES.
3444 Rewrite doc-string.
3445 (Fset_window_configuration, saved_window)
3446 (Fcurrent_window_configuration, save_window_save): Handle new
3447 members of window structure.
b9e809c2
MR
3448 (WINDOW_TOTAL_SIZE, MIN_SAFE_WINDOW_WIDTH)
3449 (MIN_SAFE_WINDOW_HEIGHT): Move to window.h.
3450 (syms_of_window): New Lisp objects Qrecord_window_buffer,
3451 Qwindow_deletable_p, Qdelete_window, Qreplace_buffer_in_windows,
3452 Qget_mru_window, Qresize_root_window,
3453 Qresize_root_window_vertically, Qsafe, Qabove, Qbelow,
3454 Qauto_buffer_name; staticpro them.
f3d1777e 3455
abde8f8c
MR
34562011-06-07 Martin Rudalics <rudalics@gmx.at>
3457
3458 * window.c (Fwindow_total_size, Fwindow_left_column)
3459 (Fwindow_top_line, window_body_lines, Fwindow_body_size)
3460 (Fwindow_list_1): New functions.
3461 (window_box_text_cols): Replace with window_body_cols.
640c8776
SM
3462 (Fwindow_width, Fscroll_left, Fscroll_right):
3463 Use window_body_cols instead of window_box_text_cols.
3464 (delete_window, Fset_window_configuration):
3465 Call delete_all_subwindows with window as argument.
fa8a67e6
MR
3466 (delete_all_subwindows): Take a window as argument and not a
3467 structure. Rewrite.
190b47e6
MR
3468 (window_loop): Remove handling of GET_LRU_WINDOW and
3469 GET_LARGEST_WINDOW.
3470 (Fget_lru_window, Fget_largest_window): Move to window.el.
abde8f8c
MR
3471
3472 * window.h: Extern window_body_cols instead of
fa8a67e6
MR
3473 window_box_text_cols. delete_all_subwindows now takes a
3474 Lisp_Object as argument.
abde8f8c 3475
640c8776
SM
3476 * indent.c (compute_motion, Fcompute_motion):
3477 Use window_body_cols instead of window_box_text_cols.
abde8f8c 3478
fa8a67e6
MR
3479 * frame.c (delete_frame): Call delete_all_subwindows with root
3480 window as argument.
3481
a54e3482
DC
34822011-06-07 Daniel Colascione <dan.colascione@gmail.com>
3483
3484 * fns.c (Fputhash): Document return value.
3485
60002bf5
CY
34862011-06-06 Chong Yidong <cyd@stupidchicken.com>
3487
3488 * image.c (gif_load): Implement gif89a spec "no disposal" method.
3489
0c671da6 34902011-06-06 Paul Eggert <eggert@cs.ucla.edu>
ccd9a01a 3491
b862a52a 3492 Cons<->int and similar integer overflow fixes (Bug#8794).
77984278 3493
be44ca6c
PE
3494 Check for overflow when converting integer to cons and back.
3495 * charset.c (Fdefine_charset_internal, Fdecode_char):
3496 Use cons_to_unsigned to catch overflow.
3497 (Fencode_char): Use INTEGER_TO_CONS.
3498 * composite.h (LGLYPH_CODE): Use cons_to_unsigned.
3499 (LGLYPH_SET_CODE): Use INTEGER_TO_CONS.
3500 * data.c (long_to_cons, cons_to_long): Remove.
3501 (cons_to_unsigned, cons_to_signed): New functions.
3502 These signal an error for invalid or out-of-range values.
3503 * dired.c (Ffile_attributes): Use INTEGER_TO_CONS.
3504 * fileio.c (Fset_visited_file_modtime): Use CONS_TO_INTEGER.
3505 * font.c (Ffont_variation_glyphs):
3506 * fontset.c (Finternal_char_font): Use INTEGER_TO_CONS.
3507 * lisp.h: Include <intprops.h>.
3508 (INTEGER_TO_CONS, CONS_TO_INTEGER): New macros.
3509 (cons_to_signed, cons_to_unsigned): New decls.
3510 (long_to_cons, cons_to_long): Remove decls.
3511 * undo.c (record_first_change): Use INTEGER_TO_CONS.
3512 (Fprimitive_undo): Use CONS_TO_INTEGER.
3513 * xfns.c (Fx_window_property): Likewise.
3514 * xselect.c: Include <limits.h>.
3515 (x_own_selection, selection_data_to_lisp_data):
3516 Use INTEGER_TO_CONS.
3517 (x_handle_selection_request, x_handle_selection_clear)
3518 (x_get_foreign_selection, Fx_disown_selection_internal)
3519 (Fx_get_atom_name, x_send_client_event): Use CONS_TO_INTEGER.
3520 (lisp_data_to_selection_data): Use cons_to_unsigned.
3521 (x_fill_property_data): Use cons_to_signed.
3522 Report values out of range.
3523
d1f3d2af
PE
3524 Check for buffer and string overflow more precisely.
3525 * buffer.h (BUF_BYTES_MAX): New macro.
3526 * lisp.h (STRING_BYTES_MAX): New macro.
3527 * alloc.c (Fmake_string):
3528 * character.c (string_escape_byte8):
3529 * coding.c (coding_alloc_by_realloc):
3530 * doprnt.c (doprnt):
3531 * editfns.c (Fformat):
3532 * eval.c (verror):
3533 Use STRING_BYTES_MAX, not MOST_POSITIVE_FIXNUM,
3534 since they may not be the same number.
3535 * editfns.c (Finsert_char):
3536 * fileio.c (Finsert_file_contents):
3537 Likewise for BUF_BYTES_MAX.
3538
dd52fcea
PE
3539 * image.c: Use ptrdiff_t, not int, for sizes.
3540 (slurp_file): Switch from int to ptrdiff_t.
3541 All uses changed.
3542 (slurp_file): Check that file size fits in both size_t (for
3543 malloc) and ptrdiff_t (for sanity and safety).
3544
7f9bbdbb
PE
3545 * fileio.c (Fverify_visited_file_modtime): Avoid time overflow
3546 if b->modtime has its maximal value.
3547
dfe18f82
PE
3548 * dired.c (Ffile_attributes): Don't assume EMACS_INT has >32 bits.
3549
84acfcf0
PE
3550 Don't assume time_t can fit into int.
3551 * buffer.h (struct buffer.modtime): Now time_t, not int.
3552 * fileio.c (Fvisited_file_modtime): No need for time_t cast now.
3553 * undo.c (Fprimitive_undo): Use time_t, not int, for time_t value.
3554
ccd9a01a
PE
3555 Minor fixes for signed vs unsigned integers.
3556 * character.h (MAYBE_UNIFY_CHAR):
3557 * charset.c (maybe_unify_char):
3558 * keyboard.c (read_char, reorder_modifiers):
3559 XINT -> XFASTINT, since the integer must be nonnegative.
3560 * ftfont.c (ftfont_spec_pattern):
3561 * keymap.c (access_keymap, silly_event_symbol_error):
3562 XUINT -> XFASTINT, since the integer must be nonnegative.
3563 (Fsingle_key_description, preferred_sequence_p): XUINT -> XINT,
3564 since it makes no difference and we prefer signed.
3565 * keyboard.c (record_char): Use XUINT when all the neighbors do.
3566 (access_keymap): NATNUMP -> INTEGERP, since the integer must be
3567 nonnegative.
3568
d6d100dd
SM
35692011-06-06 Stefan Monnier <monnier@iro.umontreal.ca>
3570
3571 * window.h (Fwindow_frame): Declare.
3572
2b6148e4
PE
35732011-06-06 Paul Eggert <eggert@cs.ucla.edu>
3574
3575 * alloc.c: Simplify handling of large-request failures (Bug#8800).
3576 (SPARE_MEMORY): Always define.
3577 (LARGE_REQUEST): Remove.
3578 (memory_full): Use SPARE_MEMORY rather than LARGE_REQUEST.
3579
f230ecc9
MR
35802011-06-06 Martin Rudalics <rudalics@gmx.at>
3581
727e958e
MR
3582 * lisp.h: Move EXFUNS for Fframe_root_window,
3583 Fframe_first_window and Fset_frame_selected_window to window.h.
3584
3585 * window.h: Move EXFUNS for Fframe_root_window,
3586 Fframe_first_window and Fset_frame_selected_window here from
3587 lisp.h.
3588
3589 * frame.c (Fwindow_frame, Fframe_first_window)
3590 (Fframe_root_window, Fframe_selected_window)
3591 (Fset_frame_selected_window): Move to window.c.
3592 (Factive_minibuffer_window): Move to minibuf.c.
3593 (Fother_visible_frames_p): New function.
3594
3595 * minibuf.c (Factive_minibuffer_window): Move here from frame.c.
3596
f230ecc9
MR
3597 * window.c (decode_window, decode_any_window): Move up in code.
3598 (Fwindowp, Fwindow_live_p): Rewrite doc-strings.
3599 (inhibit_frame_unsplittable): Remove unused variable.
bf60a96b
MR
3600 (Fwindow_buffer): Move up and rewrite doc-string.
3601 (Fwindow_parent, Fwindow_vchild, Fwindow_hchild, Fwindow_next)
3602 (Fwindow_prev): New functions.
727e958e
MR
3603 (Fwindow_frame): Move here from frame.c. Accept any window as
3604 argument.
3605 (Fframe_root_window, Fframe_first_window)
3606 (Fframe_selected_window): Move here from frame.c. Accept frame
3607 or arbitrary window as argument. Update doc-strings.
3608 (Fminibuffer_window): Move up in code.
3609 (Fwindow_minibuffer_p): Move up in code and simplify.
d6d100dd
SM
3610 (Fset_frame_selected_window): Move here from frame.c.
3611 Marginal rewrite.
727e958e
MR
3612 (Fselected_window, select_window, Fselect_window): Move up in
3613 code. Minor doc-string fixes.
f230ecc9 3614
4d09bcf6
PE
36152011-06-06 Paul Eggert <eggert@cs.ucla.edu>
3616
3617 * alloc.c (memory_full) [SYSTEM_MALLOC]: Port to MacOS (Bug#8800).
3618 Do not assume that spare memory exists; that assumption is valid
3619 only if SYSTEM_MALLOC.
3620 (LARGE_REQUEST): New macro, so that the issue of large requests
3621 is separated from the issue of spare memory.
3622
810928a2
AS
36232011-06-05 Andreas Schwab <schwab@linux-m68k.org>
3624
172418ad
AS
3625 * editfns.c (Fformat): Correctly handle zero flag with hexadecimal
3626 format. (Bug#8806)
3627
43f862f7
AS
3628 * gtkutil.c (xg_get_default_scrollbar_width): Avoid warning.
3629
810928a2
AS
3630 * xfns.c (x_set_scroll_bar_default_width): Move declarations
3631 before statements.
3632
a059fe24
JD
36332011-06-05 Jan Djärv <jan.h.d@swipnet.se>
3634
3635 * gtkutil.c (xg_get_default_scrollbar_width): New function.
3636
3637 * gtkutil.h: Declare xg_get_default_scrollbar_width.
3638
3639 * xfns.c (x_set_scroll_bar_default_width): If USE_GTK, get
3640 min width by calling x_set_scroll_bar_default_width (Bug#8505).
3641
989bf368
JB
36422011-06-05 Juanma Barranquero <lekktu@gmail.com>
3643
3644 * xdisp.c (single_display_spec_intangible_p): Remove declaration.
3645
4b80f674
CY
36462011-06-04 Chong Yidong <cyd@stupidchicken.com>
3647
3648 * xselect.c (x_clipboard_manager_save): Remove redundant arg.
3649 (x_clipboard_manager_save): Add return value.
d6d100dd
SM
3650 (x_clipboard_manager_error_1, x_clipboard_manager_error_2):
3651 New error handlers.
4b80f674
CY
3652 (x_clipboard_manager_save_frame, x_clipboard_manager_save_all):
3653 Obey Vx_select_enable_clipboard_manager. Catch errors in
3654 x_clipboard_manager_save (Bug#8779).
3655 (Vx_select_enable_clipboard_manager): New variable.
de65b42c 3656 (x_get_foreign_selection): Reduce scope of x_catch_errors (Bug#8790).
4b80f674 3657
99a33b77 36582011-06-04 Dan Nicolaescu <dann@ics.uci.edu>
8b3115e7
DN
3659
3660 * emacs.c (main): Warn when starting a GTK emacs in daemon mode.
3661
99a33b77 36622011-06-04 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
14eca62f
YM
3663
3664 * fringe.c (update_window_fringes): Don't update overlay arrow bitmap
3665 in the current matrix if keep_current_p is non-zero.
3666
8264569d
EZ
36672011-06-04 Eli Zaretskii <eliz@gnu.org>
3668
3669 * bidi.c (bidi_level_of_next_char): Fix last change.
3670
57f97249
EZ
36712011-06-03 Eli Zaretskii <eliz@gnu.org>
3672
fec2107c 3673 Support bidi reordering of text covered by display properties.
57f97249 3674
fec2107c
EZ
3675 * bidi.c (bidi_copy_it): Use offsetof instead of emulating it.
3676 (bidi_fetch_char, bidi_fetch_char_advance): New functions.
3677 (bidi_cache_search, bidi_cache_iterator_state)
3678 (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak)
d6d100dd
SM
3679 (bidi_level_of_next_char, bidi_move_to_visually_next):
3680 Support character positions inside a run of characters covered by a
fec2107c
EZ
3681 display string.
3682 (bidi_paragraph_init, bidi_resolve_explicit_1)
3683 (bidi_level_of_next_char): Call bidi_fetch_char and
3684 bidi_fetch_char_advance instead of FETCH_CHAR and
3685 FETCH_CHAR_ADVANCE.
3686 (bidi_init_it): Initialize new members.
3687 (LRE_CHAR, RLE_CHAR, PDF_CHAR, LRO_CHAR, RLO_CHAR): Remove macro
3688 definitions.
3689 (bidi_explicit_dir_char): Lookup character type in bidi_type_table,
3690 instead of using explicit *_CHAR codes.
d6d100dd
SM
3691 (bidi_resolve_explicit, bidi_resolve_weak):
3692 Use FETCH_MULTIBYTE_CHAR instead of FETCH_CHAR, as reordering of
fec2107c
EZ
3693 bidirectional text is supported only in multibyte buffers.
3694 (bidi_init_it): Accept additional argument FRAME_WINDOW_P and use
3695 it to initialize the frame_window_p member of struct bidi_it.
3696 (bidi_cache_iterator_state, bidi_resolve_explicit_1)
3697 (bidi_resolve_explicit, bidi_resolve_weak)
3698 (bidi_level_of_next_char, bidi_move_to_visually_next): Abort if
3699 bidi_it->nchars is non-positive.
3700 (bidi_level_of_next_char): Don't try to lookup the cache for the
3701 next/previous character if nothing is cached there yet, or if we
3702 were just reseat()'ed to a new position.
c40e2fb2 3703
0e14fe90
EZ
3704 * xdisp.c (set_cursor_from_row): Set start and stop points
3705 according to the row's direction when priming the loop that looks
3706 for the glyph on which to display cursor.
3707 (single_display_spec_intangible_p): Function deleted.
3708 (display_prop_intangible_p): Reimplement to call
3709 handle_display_spec instead of single_display_spec_intangible_p.
d6d100dd
SM
3710 Accept 3 additional arguments needed by handle_display_spec.
3711 This fixes incorrect cursor motion across display property with complex
0e14fe90
EZ
3712 values: lists, `(when COND...)' forms, etc.
3713 (single_display_spec_string_p): Support property values that are
3714 lists with the argument STRING its top-level element.
3715 (display_prop_string_p): Fix the condition for processing a
3716 property that is a list to be consistent with handle_display_spec.
fec2107c 3717 (handle_display_spec): New function, refactored from the
fc6f18ce
EZ
3718 last portion of handle_display_prop.
3719 (compute_display_string_pos): Accept additional argument
3720 FRAME_WINDOW_P. Call handle_display_spec to determine whether the
3721 value of a `display' property is a "replacing spec".
3722 (handle_single_display_spec): Accept 2 additional arguments BUFPOS
3723 and FRAME_WINDOW_P. If IT is NULL, don't set up the iterator from
3724 the display property, but just return a value indicating whether
3725 the display property will replace the characters it covers.
3726 (Fcurrent_bidi_paragraph_direction): Initialize the nchars and
3727 frame_window_p members of struct bidi_it.
d6d100dd
SM
3728 (compute_display_string_pos, compute_display_string_end):
3729 New functions.
fec2107c
EZ
3730 (push_it): Accept second argument POSITION, where pop_it should
3731 jump to continue iteration.
3732 (reseat_1): Initialize bidi_it.disp_pos.
fc6f18ce 3733
fec2107c
EZ
3734 * keyboard.c (adjust_point_for_property): Adjust the call to
3735 display_prop_intangible_p to its new signature.
fc6f18ce
EZ
3736
3737 * dispextern.h (struct bidi_it): New member frame_window_p.
fec2107c
EZ
3738 (bidi_init_it): Update prototypes.
3739 (display_prop_intangible_p): Update prototype.
d6d100dd
SM
3740 (compute_display_string_pos, compute_display_string_end):
3741 Declare prototypes.
fec2107c
EZ
3742 (struct bidi_it): New members nchars and disp_pos. ch_len is now
3743 EMACS_INT.
fc6f18ce 3744
40087514 37452011-06-02 Paul Eggert <eggert@cs.ucla.edu>
0de4bb68 3746
57f53182
PE
3747 Malloc failure behavior now depends on size of allocation.
3748 * alloc.c (buffer_memory_full, memory_full): New arg NBYTES.
3749 * lisp.h: Change signatures accordingly.
3750 * alloc.c, buffer.c, editfns.c, menu.c, minibuf.c, xterm.c:
3751 All callers changed. (Bug#8762)
3752
3753 * gnutls.c: Use Emacs's memory allocators.
3754 Without this change, the gnutls library would invoke malloc etc.
3755 directly, which causes problems on non-SYNC_INPUT hosts, and which
3756 runs afoul of improving memory_full behavior. (Bug#8761)
3757 (fn_gnutls_global_set_mem_functions): New macro or function pointer.
3758 (emacs_gnutls_global_init): Use it to specify xmalloc, xrealloc,
3759 xfree instead of the default malloc, realloc, free.
3760 (Fgnutls_boot): No need to check for memory allocation failure,
3761 since xmalloc does that for us.
3762
ac32cd99 3763 Remove arbitrary limit of 2**31 entries in hash tables. (Bug#8771)
3870d916
PE
3764 * category.c (hash_get_category_set):
3765 * ccl.c (ccl_driver):
3766 * charset.c (Fdefine_charset_internal):
3767 * charset.h (struct charset.hash_index):
3768 * composite.c (get_composition_id, gstring_lookup_cache)
3769 (composition_gstring_put_cache):
3770 * composite.h (struct composition.hash_index):
3771 * dispextern.h (struct image.hash):
3772 * fns.c (next_almost_prime, larger_vector, cmpfn_eql)
3773 (cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql)
3774 (hashfn_equal, hashfn_user_defined, make_hash_table)
3775 (maybe_resize_hash_table, hash_lookup, hash_put)
3776 (hash_remove_from_table, hash_clear, sweep_weak_table, SXHASH_COMBINE)
3777 (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector)
3778 (Fsxhash, Fgethash, Fputhash, Fmaphash):
3779 * image.c (make_image, search_image_cache, lookup_image)
3780 (xpm_put_color_table_h):
3781 * lisp.h (struct Lisp_Hash_Table):
0de4bb68 3782 * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
ac389d0c 3783 * print.c (print): Use 'EMACS_UINT' and 'EMACS_INT'
3870d916 3784 for hashes and hash indexes, instead of 'unsigned' and 'int'.
40087514
PE
3785 * alloc.c (allocate_vectorlike):
3786 Check for overflow in vector size calculations.
3787 * ccl.c (ccl_driver):
3788 Check for overflow when converting EMACS_INT to int.
0de4bb68
PE
3789 * fns.c, image.c: Remove unnecessary static decls that would otherwise
3790 need to be updated by these changes.
40087514
PE
3791 * fns.c (make_hash_table, maybe_resize_hash_table):
3792 Check for integer overflow with large hash tables.
0de4bb68
PE
3793 (make_hash_table, maybe_resize_hash_table, Fmake_hash_table):
3794 Prefer the faster XFLOAT_DATA to XFLOATINT where either will do.
3795 (SXHASH_REDUCE): New macro.
3796 (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector):
3797 Use it instead of discarding useful hash info with large hash values.
3798 (sxhash_float): New function.
3799 (sxhash): Use it. No more need for "& INTMASK" due to above changes.
3800 * lisp.h (FIXNUM_BITS): New macro, useful for SXHASH_REDUCE etc.
40087514
PE
3801 (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM, INTMASK):
3802 Rewrite to use FIXNUM_BITS, as this simplifies things.
0de4bb68
PE
3803 (next_almost_prime, larger_vector, sxhash, hash_lookup, hash_put):
3804 Adjust signatures to match updated version of code.
3805 (consing_since_gc): Now EMACS_INT, since a single hash table can
3806 use more than INT_MAX bytes.
3807
698d32e2
DN
38082011-06-01 Dan Nicolaescu <dann@ics.uci.edu>
3809
3810 Make it possible to build with GCC-4.6+ -O2 -flto.
3811
3812 * emacs.c (__malloc_initialize_hook): Mark as EXTERNALLY_VISIBLE.
3813
fd6fa53f
SM
38142011-06-01 Stefan Monnier <monnier@iro.umontreal.ca>
3815
3816 * minibuf.c (get_minibuffer, read_minibuf_unwind):
3817 Call minibuffer-inactive-mode.
3818
864db017
JB
38192011-05-31 Juanma Barranquero <lekktu@gmail.com>
3820
3821 * makefile.w32-in ($(BLD)/data.$(O), $(BLD)/editfns.$(O)):
3822 Update dependencies.
3823
2ad0baf4
DN
38242011-05-31 Dan Nicolaescu <dann@ics.uci.edu>
3825
3826 * data.c (init_data): Remove code for UTS, this system is not
3827 supported anymore.
3828
4fcc2638
DN
38292011-05-31 Dan Nicolaescu <dann@ics.uci.edu>
3830
3831 Don't force ./temacs to start in terminal mode.
3832
3833 * frame.c (make_initial_frame): Initialize faces in all cases, not
3834 only when CANNOT_DUMP is defined.
3835 * dispnew.c (init_display): Remove CANNOT_DUMP condition.
3836
c56e0fd5
DN
38372011-05-31 Dan Nicolaescu <dann@ics.uci.edu>
3838
3839 * dispnew.c (add_window_display_history): Use const for the string
3840 pointer. Remove declaration, not needed.
3841
333d54da 38422011-05-31 Paul Eggert <eggert@cs.ucla.edu>
9cf9f756 3843
55d4c1b2 3844 Use 'inline', not 'INLINE'.
333d54da 3845 <http://lists.gnu.org/archive/html/emacs-devel/2011-05/msg00914.html>
55d4c1b2
PE
3846 * alloc.c, fontset.c (INLINE): Remove.
3847 * alloc.c, bidi.c, charset.c, coding.c, dispnew.c, fns.c, image.c:
3848 * intervals.c, keyboard.c, process.c, syntax.c, textprop.c, w32term.c:
3849 * xdisp.c, xfaces.c, xterm.c: Replace all uses of INLINE with inline.
3850 * gmalloc.c (register_heapinfo): Use inline unconditionally.
3851 * lisp.h (LISP_MAKE_RVALUE): Use inline, not __inline__.
3852
738db178
DN
38532011-05-31 Dan Nicolaescu <dann@ics.uci.edu>
3854
3855 Make it possible to run ./temacs.
3856
3857 * callproc.c (set_initial_environment): Remove CANNOT_DUMP code,
3858 syms_of_callproc does the same thing. Remove test for
3859 "initialized", do it in the caller.
3860 * emacs.c (main): Avoid calling set_initial_environment when dumping.
3861
620c53a6
SM
38622011-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
3863
3864 * minibuf.c (Finternal_complete_buffer): Return `category' metadata.
3865 (read_minibuf): Use get_minibuffer.
3866 (syms_of_minibuf): Use DEFSYM.
3867 (Qmetadata): New var.
3868 * data.c (Qbuffer): Don't make it static.
3869 (syms_of_data): Use DEFSYM.
3870
e003a292
PE
38712011-05-31 Paul Eggert <eggert@cs.ucla.edu>
3872
3873 * ccl.c (CCL_CODE_RANGE): Allow negative numbers. (Bug#8751)
3874 (CCL_CODE_MIN): New macro.
3875
ed008a6d
PE
38762011-05-30 Paul Eggert <eggert@cs.ucla.edu>
3877
3687c2ef
PE
3878 * alloc.c (lisp_align_malloc): Omit unnecessary val==NULL tests.
3879
ed008a6d
PE
3880 * eval.c (Qdebug): Now static.
3881 * lisp.h (Qdebug): Remove decl. This reverts a part of the
3882 2011-04-26T11:26:05Z!dan.colascione@gmail.com that inadvertently undid part of
3883 2011-04-14T06:48:41Z!eggert@cs.ucla.edu.
3884
d66c4c7c
CY
38852011-05-29 Chong Yidong <cyd@stupidchicken.com>
3886
3887 * image.c: Various fixes to ImageMagick code comments.
3888 (Fimagemagick_types): Doc fix.
3889
5fbc2025
PE
38902011-05-29 Paul Eggert <eggert@cs.ucla.edu>
3891
0196f88a
PE
3892 Minor fixes prompted by GCC 4.6.0 warnings.
3893
3894 * xselect.c (converted_selections, conversion_fail_tag): Now static.
3895
5fbc2025
PE
3896 * emacs.c [HAVE_X_WINDOWS]: Include "xterm.h".
3897 (x_clipboard_manager_save_all): Move extern decl to ...
3898 * xterm.h: ... here, so that it can be checked for consistency.
3899
1dd3c2d9
CY
39002011-05-29 Chong Yidong <cyd@stupidchicken.com>
3901
3902 * xselect.c (x_clipboard_manager_save_frame)
3903 (x_clipboard_manager_save_all): New functions.
3904 (Fx_clipboard_manager_save): Lisp function deleted.
3905
3906 * emacs.c (Fkill_emacs): Call x_clipboard_manager_save_all.
3907 * frame.c (delete_frame): Call x_clipboard_manager_save_frame.
3908
3909 * xterm.h: Update prototype.
3910
5ba6571d
WX
39112011-05-28 William Xu <william.xwl@gmail.com>
3912
3913 * nsterm.m (ns_term_shutdown): Synchronize user defaults before
3914 exiting (Bug#8239).
3915
3eaff834
JM
39162011-05-28 Jim Meyering <meyering@redhat.com>
3917
e1900994 3918 Avoid a sign-extension bug in crypto_hash_function.
3eaff834
JM
3919 * fns.c (to_uchar): Define.
3920 (crypto_hash_function): Use it to convert some newly-signed
3921 variables to unsigned, to avoid sign-extension bugs. For example,
3922 without this change, (md5 "truc") would evaluate to
3923 45723a2aff78ff4fff7fff1114760e62 rather than the expected
3924 45723a2af3788c4ff17f8d1114760e62. Reported by Antoine Levitt in
e1900994 3925 https://lists.gnu.org/archive/html/emacs-devel/2011-05/msg00883.html.
3eaff834 3926
0f6990a7
PE
39272011-05-27 Paul Eggert <eggert@cs.ucla.edu>
3928
3929 Integer overflow fixes.
c8a9ca5a 3930
08686060
PE
3931 * dbusbind.c: Serial number integer overflow fixes.
3932 (CHECK_DBUS_SERIAL_GET_SERIAL): New macro.
08686060
PE
3933 (Fdbus_call_method_asynchronously, xd_read_message_1): Use a float
3934 to hold a serial number that is too large for a fixnum.
3935 (Fdbus_method_return_internal, Fdbus_method_error_internal):
3936 Check for serial numbers out of range. Decode any serial number
59568bf0 3937 that was so large that it became a float. (Bug#8722)
08686060 3938
2d1fc3c7
PE
3939 * dbusbind.c: Use XFASTINT rather than XUINT, and check for nonneg.
3940 (Fdbus_call_method, Fdbus_call_method_asynchronously):
3941 Use XFASTINT rather than XUINT when numbers are nonnegative.
3942 (xd_append_arg, Fdbus_method_return_internal):
3943 (Fdbus_method_error_internal): Likewise. Also, for unsigned
3944 arguments, check that Lisp number is nonnegative, rather than
59568bf0 3945 silently wrapping negative numbers around. (Bug#8722)
30217ff0 3946 (xd_read_message_1): Don't assume dbus_uint32_t can fit in int.
59568bf0 3947 (Bug#8722)
2d1fc3c7 3948
c8a9ca5a
PE
3949 * data.c (arith_driver, Flsh): Avoid unnecessary casts to EMACS_UINT.
3950
519e1d69
PE
3951 * ccl.c (ccl_driver): Redo slightly to avoid the need for 'unsigned'.
3952
30569699
PE
3953 ccl: add integer overflow checks
3954 * ccl.c (CCL_CODE_MAX, GET_CCL_RANGE, GET_CCL_CODE, GET_CCL_INT):
3955 (IN_INT_RANGE): New macros.
3956 (ccl_driver): Use them to check for integer overflow when
3957 decoding a CCL program. Many of the new checks are whether XINT (x)
3958 fits in int; it doesn't always, on 64-bit hosts. The new version
3959 doesn't catch all possible integer overflows, but it's an
847044ea 3960 improvement. (Bug#8719)
30569699 3961
c11285dc
PE
3962 * alloc.c (make_event_array): Use XINT, not XUINT.
3963 There's no need for unsigned here.
3964
fdccd48e
PE
3965 * mem-limits.h (EXCEEDS_LISP_PTR) [!USE_LSB_TAG]: EMACS_UINT -> uintptr_t
3966 This follows up to the 2011-05-06 change that substituted uintptr_t
3967 for EMACS_INT. This case wasn't caught back then.
3968
37910ab2
PE
3969 Rework Fformat to avoid integer overflow issues.
3970 * editfns.c: Include <float.h> unconditionally, as it's everywhere
3971 now (part of C89). Include <verify.h>.
3972 (MAX_10_EXP, CONVERTED_BYTE_SIZE): Remove; no longer needed.
3973 (pWIDE, pWIDElen, signed_wide, unsigned_wide): New defns.
3974 (Fformat): Avoid the prepass trying to compute sizes; it was only
3975 approximate and thus did not catch overflow reliably. Instead, walk
3976 through the format just once, formatting and computing sizes as we go,
3977 checking for integer overflow at every step, and allocating a larger
3978 buffer as needed. Keep track separately whether the format is
3979 multibyte. Keep only the most-recently calculated precision, rather
3980 than them all. Record whether each argument has been converted to
3981 string. Use EMACS_INT, not int, for byte and char and arg counts.
3982 Support field widths and precisions larger than INT_MAX. Avoid
3983 sprintf's undefined behavior with conversion specifications such as %#d
3984 and %.0c. Fix bug with strchr succeeding on '\0' when looking for
3985 flags. Fix bug with (format "%c" 256.0). Avoid integer overflow when
3986 formatting out-of-range floating point numbers with int
9173deec 3987 formats. (Bug#8668)
37910ab2 3988
2e6578fb
PE
3989 * lisp.h (FIXNUM_OVERFLOW_P): Work even if arg is a NaN.
3990
0ae6bdee
PE
3991 * data.c: Avoid integer truncation in expressions involving floats.
3992 * data.c: Include <intprops.h>.
3993 (arith_driver): When there's an integer overflow in an expression
3994 involving floating point, convert the integers to floating point
3995 so that the resulting value does not suffer from catastrophic
3996 integer truncation. For example, on a 64-bit host (* 4
3997 most-negative-fixnum 0.5) should yield about -4.6e+18, not zero.
3998 Do not rely on undefined behavior after integer overflow.
3999
de883a70
PE
4000 merge count_size_as_multibyte, parse_str_to_multibyte
4001 * character.c, character.h (count_size_as_multibyte):
fd6fa53f 4002 Rename from parse_str_to_multibyte; all uses changed.
de883a70
PE
4003 Check for integer overflow.
4004 * insdel.c, lisp.h (count_size_as_multibyte): Remove,
4005 since it's now a duplicate of the other. This is more of
4006 a character than a buffer op, so better that it's in character.c.
4007 * fns.c, print.c: Adjust to above changes.
4008
2ff916cb
PE
40092011-05-27 Stefan Monnier <monnier@iro.umontreal.ca>
4010
4011 * xselect.c (x_convert_selection): Yet another int/Lisp_Object mixup.
4012
f1b54466
PE
40132011-05-27 Paul Eggert <eggert@cs.ucla.edu>
4014
fb1ac845
PE
4015 * xselect.c: Fix minor problems prompted by GCC 4.6.0 warnings.
4016 (x_handle_selection_request, frame_for_x_selection): Remove unused vars.
4017 (x_clipboard_manager_save): Now static.
4018 (Fx_clipboard_manager_save): Rename local to avoid shadowing.
4019
f1b54466
PE
4020 * fns.c: Fix minor problems prompted by GCC 4.6.0 warnings.
4021 (crypto_hash_function): Now static.
4022 Fix pointer signedness problems. Avoid unnecessary initializations.
4023
a9f737ee
CY
40242011-05-27 Chong Yidong <cyd@stupidchicken.com>
4025
4026 * termhooks.h (Vselection_alist): Make it terminal-local.
4027
4028 * terminal.c (create_terminal): Initialize it.
4029
4030 * xselect.c: Support for clipboard managers.
4031 (Vselection_alist): Move to termhooks.h as terminal-local var.
4032 (LOCAL_SELECTION): New macro.
4033 (x_atom_to_symbol): Handle x_display_info_for_display fail case.
4034 (symbol_to_x_atom): Remove gratuitous arg.
4035 (x_handle_selection_request, lisp_data_to_selection_data)
4036 (x_get_foreign_selection, Fx_register_dnd_atom): Callers changed.
620c53a6
SM
4037 (x_own_selection, x_get_local_selection, x_convert_selection):
4038 New arg, specifying work frame. Use terminal-local Vselection_alist.
a9f737ee
CY
4039 (some_frame_on_display): Delete unused function.
4040 (Fx_own_selection_internal, Fx_get_selection_internal)
4041 (Fx_disown_selection_internal, Fx_selection_owner_p)
4042 (Fx_selection_exists_p): New optional frame arg.
4043 (frame_for_x_selection, Fx_clipboard_manager_save): New functions.
4044 (x_handle_selection_clear): Don't treat other terminals with the
4045 same keyboard specially. Use the terminal-local Vselection_alist.
4046 (x_clear_frame_selections): Use Frun_hook_with_args.
4047
4048 * xterm.c (x_term_init): Intern ATOM and CLIPBOARD_MANAGER atoms.
4049
4050 * xterm.h: Add support for those atoms.
4051
e067f0c1
CY
40522011-05-26 Chong Yidong <cyd@stupidchicken.com>
4053
4054 * xselect.c: ICCCM-compliant handling of MULTIPLE targets.
4055 (converted_selections, conversion_fail_tag): New global variables.
4056 (x_selection_request_lisp_error): Free the above.
4057 (x_get_local_selection): Remove unnecessary code.
4058 (x_reply_selection_request): Args changed; handle arbitrary array
620c53a6
SM
4059 of converted selections stored in converted_selections.
4060 Separate the XChangeProperty and SelectionNotify steps.
e067f0c1
CY
4061 (x_handle_selection_request): Rewrite to handle MULTIPLE target.
4062 (x_convert_selection): New function.
4063 (x_handle_selection_event): Simplify.
4064 (x_get_foreign_selection): Don't ignore incoming requests while
4065 waiting for an answer; this will fail when we implement
4066 SAVE_TARGETS, and seems unnecessary anyway.
4067 (selection_data_to_lisp_data): Recognize ATOM_PAIR type.
4068 (Vx_sent_selection_functions): Doc fix.
4069
0f4aebc0
LL
40702011-05-26 Leo Liu <sdl.web@gmail.com>
4071
4072 * editfns.c (Ftranspose_regions): Allow empty regions. (Bug#8699)
4073
e61124cd
YM
40742011-05-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
4075
4076 * dispextern.h (struct glyph_row): New member fringe_bitmap_periodic_p.
4077
4078 * dispnew.c (shift_glyph_matrix, scrolling_window): Mark scrolled row
4079 for fringe update if it has periodic bitmap.
ac389d0c 4080 (row_equal_p): Also compare left_fringe_offset, right_fringe_offset,
e61124cd
YM
4081 and fringe_bitmap_periodic_p.
4082
4083 * fringe.c (get_fringe_bitmap_data): New function.
4084 (draw_fringe_bitmap_1, update_window_fringes): Use it.
4085 (update_window_fringes): Record periodicity of fringe bitmap in glyph
4086 row. Mark glyph row for fringe update if periodicity changed.
4087
4088 * xdisp.c (try_window_reusing_current_matrix): Don't mark scrolled row
4089 for fringe update unless it has periodic bitmap.
4090
f16d9837
KH
40912011-05-25 Kenichi Handa <handa@m17n.org>
4092
4093 * xdisp.c (get_next_display_element): Set correct it->face_id for
4094 a static composition.
4095
e1b90ef6
LL
40962011-05-24 Leo Liu <sdl.web@gmail.com>
4097
4098 * deps.mk (fns.o):
4099 * makefile.w32-in ($(BLD)/fns.$(O)): Include sha1.h.
4100
4101 * fns.c (crypto_hash_function, Fsha1): New function.
4102 (Fmd5): Use crypto_hash_function.
4103 (syms_of_fns): Add Ssha1.
4104
7400048f
PE
41052011-05-22 Paul Eggert <eggert@cs.ucla.edu>
4106
4107 * gnutls.c: Remove unused macros.
4108 (fn_gnutls_transport_set_lowat, fn_gnutls_transport_set_pull_function):
4109 (fn_gnutls_transport_set_push_function) [!WINDOWSNT]:
4110 Remove macros that are defined and never used.
4111 Caught by gcc -Wunused-macros (GCC 4.6.0, Fedora 14).
4112
abb71cf4
CY
41132011-05-22 Chong Yidong <cyd@stupidchicken.com>
4114
4115 * xselect.c (syms_of_xselect): Remove unused symbol SAVE_TARGETS.
4116 (Fx_get_selection_internal): Minor cleanup.
4117 (Fx_own_selection_internal): Rename arguments for consistency with
4118 select.el.
4119
6307db39
PE
41202011-05-22 Paul Eggert <eggert@cs.ucla.edu>
4121
4122 * xselect.c (QSAVE_TARGETS): New static var, to fix build failure.
4123
f3d4e0a4
CY
41242011-05-22 Chong Yidong <cyd@stupidchicken.com>
4125
4126 * xselect.c (syms_of_xselect): Include character.h; use DEFSYM.
4127
4d8ade89
YM
41282011-05-21 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
4129
4130 * dispnew.c (scrolling_window): Don't exclude the case that the
4131 last enabled row in the desired matrix touches the bottom boundary.
4132
32078c8d
GM
41332011-05-21 Glenn Morris <rgm@gnu.org>
4134
4135 * Makefile.in ($(etc)/DOC): Make second command line even shorter.
33cf345f
GM
4136 (SOME_MACHINE_OBJECTS): Replace FONT_OBJ by its maximal expansion,
4137 and add some more files.
32078c8d 4138
7285dc67
EZ
41392011-05-20 Eli Zaretskii <eliz@gnu.org>
4140
4141 * callproc.c (Fcall_process) [MSDOS]: Fix arguments to
4142 report_file_error introduced by the change from 2011-05-07.
4143
89d1bd22
PE
41442011-05-20 Paul Eggert <eggert@cs.ucla.edu>
4145
4146 * systime.h (Time): Define only if emacs is defined.
4147 This is to allow ../lib-src/profile.c to be compiled on FreeBSD,
4148 where the include path doesn't have X11/X.h by default. See
4149 <http://lists.gnu.org/archive/html/emacs-devel/2011-05/msg00561.html>.
4150
e23640bb 41512011-05-20 Kenichi Handa <handa@m17n.org>
31bfc35c
KH
4152
4153 * composite.c (find_automatic_composition): Fix previous change.
4154
b9704ad9
GM
41552011-05-20 Glenn Morris <rgm@gnu.org>
4156
4157 * lisp.mk: New file, split from Makefile.in.
4158 * Makefile.in (lisp): Move to separate file, inserted by @lisp_frag@.
4159 (shortlisp): Remove.
4160 ($(etc)/DOC): Edit lisp.mk rather than using $shortlisp.
4161
4a720484
GM
41622011-05-19 Glenn Morris <rgm@gnu.org>
4163
4164 * Makefile.in (MSDOS_SUPPORT_REAL, MSDOS_SUPPORT, NS_SUPPORT)
4165 (REAL_MOUSE_SUPPORT, GPM_MOUSE_SUPPORT, MOUSE_SUPPORT, TOOLTIP_SUPPORT)
4166 (BASE_WINDOW_SUPPORT, X_WINDOW_SUPPORT, WINDOW_SUPPORT): Remove.
4167 (lisp): Set the order to that of loadup.el.
4168 (shortlisp): Make it a copy of $lisp.
4169 (SOME_MACHINE_LISP): Remove.
4170 ($(etc)/DOC): Depend just on $lisp, not $SOME_MACHINE_LISP too.
4171 Use just $shortlisp, not $SOME_MACHINE_LISP too.
4172
a28d4396
KH
41732011-05-18 Kenichi Handa <handa@m17n.org>
4174
4175 * composite.c (CHAR_COMPOSABLE_P): Add more check for efficiency.
4176 (BACKWARD_CHAR): Wrap the arg STOP by parenthesis.
4177 (find_automatic_composition): Mostly rewrite for efficiency.
4178
a2b1fa8e
JB
41792011-05-18 Juanma Barranquero <lekktu@gmail.com>
4180
4181 * makefile.w32-in: Update dependencies.
4182
8e1f5610
CS
41832011-05-18 Christoph Scholtes <cschol2112@googlemail.com>
4184
4185 * menu.c: Include limits.h (fixes the MS-Windows build broken by
7d7d0045 4186 2011-06-18T18:49:19Z!cyd@stupidchicken.com).
8e1f5610 4187
7025ee00 41882011-05-18 Paul Eggert <eggert@cs.ucla.edu>
cb93f9be 4189
cdfa6eab
PE
4190 Fix some integer overflow issues, such as string length overflow.
4191
06d6db33
PE
4192 * insdel.c (count_size_as_multibyte): Check for string overflow.
4193
2b4560a8
PE
4194 * character.c (lisp_string_width): Check for string overflow.
4195 Use EMACS_INT, not int, for string indexes and lengths; in
4196 particular, 2nd arg is now EMACS_INT, not int. Do not crash if
4197 the resulting string length overflows an EMACS_INT; instead,
4198 report a string overflow if no precision given. When checking for
4199 precision exhaustion, use a check that cannot possibly have
4200 integer overflow. (Bug#8675)
4201 * character.h (lisp_string_width): Adjust to new signature.
4202
cb93f9be
PE
4203 * alloc.c (string_overflow): New function.
4204 (Fmake_string): Use it. This doesn't change behavior, but saves
4205 a few bytes and will simplify future changes.
4206 * character.c (string_escape_byte8): Likewise.
4207 * lisp.h (string_overflow): New decl.
4208
1a1f3366
PE
4209 Fixups, following up to the user-interface timestamp change.
4210 * nsterm.m (last_mouse_movement_time, ns_mouse_position): Use Time
4211 for UI timestamps, instead of unsigned long.
9fbd6841
PE
4212 * msdos.c (mouse_get_pos): Likewise.
4213 * w32inevt.c (movement_time, w32_console_mouse_position): Likewise.
1a1f3366
PE
4214 * w32gui.h (Time): Define by including "systime.h" rather than by
4215 declaring it ourselves. (Bug#8664)
4216
d4e3e4d3
PE
4217 * dispextern.h (struct image): Don't assume time_t <= unsigned long.
4218 * image.c (clear_image_cache): Likewise.
4219
f6a24d19
PE
4220 * term.c (term_mouse_position): Don't assume time_t wraparound.
4221
08dc5ae6
PE
4222 Be more systematic about user-interface timestamps.
4223 Before, the code sometimes used 'Time', sometimes 'unsigned long',
620c53a6
SM
4224 and sometimes 'EMACS_UINT', to represent these timestamps.
4225 This change causes it to use 'Time' uniformly, as that's what X uses.
08dc5ae6
PE
4226 This makes the code easier to follow, and makes it easier to catch
4227 integer overflow bugs such as Bug#8664.
4228 * frame.c (Fmouse_position, Fmouse_pixel_position):
4229 Use Time, not unsigned long, for user-interface timestamps.
4230 * keyboard.c (last_event_timestamp, kbd_buffer_get_event): Likewise.
4231 (button_down_time, make_lispy_position, make_lispy_movement): Likewise.
4232 * keyboard.h (last_event_timestamp): Likewise.
4233 * menu.c (Fx_popup_menu) [!HAVE_X_WINDOWS]: Likewise.
4234 * menu.h (xmenu_show): Likewise.
4235 * term.c (term_mouse_position): Likewise.
4236 * termhooks.h (struct input_event.timestamp): Likewise.
4237 (struct terminal.mouse_position_hook): Likewise.
4238 * xmenu.c (create_and_show_popup_menu, xmenu_show): Likewise.
4239 * xterm.c (XTmouse_position, x_scroll_bar_report_motion): Likewise.
4240 * systime.h (Time): New decl. Pull it in from <X11/X.h> if
4241 HAVE_X_WINDOWS, otherwise define it as unsigned long, which is
4242 what it was before.
4243 * menu.h, termhooks.h: Include "systime.h", for Time.
4244
8e55734a
PE
4245 * keyboard.c (make_lispy_event): Fix problem in integer overflow.
4246 Don't assume that the difference between two unsigned long values
4247 can fit into an integer. At this point, we know button_down_time
4248 <= event->timestamp, so the difference must be nonnegative, so
4249 there's no need to cast the result if double-click-time is
4250 nonnegative, as it should be; check that it's nonnegative, just in
4251 case. This bug is triggered when events are more than 2**31 ms
86db42d2 4252 apart (about 25 days). (Bug#8664)
8e55734a 4253
841f1b75 4254 * xselect.c (last_event_timestamp): Remove duplicate decl.
6434756c 4255 (x_own_selection): Remove needless cast to unsigned long.
841f1b75 4256
3e26f69c
PE
4257 * xmenu.c (set_frame_menubar): Use int, not EMACS_UINT, for indexes
4258 that always fit in int. Use a sentinel instead of a counter, to
4259 avoid a temp and to allay GCC's concerns about possible int overflow.
d230cb74
PE
4260 * frame.h (struct frame): Use int for menu_bar_items_used
4261 instead of EMACS_INT, since it always fits in int.
3e26f69c 4262
5cc152c0
PE
4263 * menu.c (grow_menu_items): Check for int overflow.
4264
d89eb65e
PE
4265 * xmenu.c (set_frame_menubar): Don't mishandle vectors with no nils.
4266
5235bd3e
PE
4267 * xterm.c: Use EMACS_INT for Emacs modifiers, and int for X modifiers.
4268 Before, the code was not consistent. These values cannot exceed
4269 2**31 - 1 so there's no need to make them unsigned.
4270 (x_x_to_emacs_modifiers): Accept int and return EMACS_INT.
4271 (x_emacs_to_x_modifiers): Accept EMACS_INT and return int.
4272 (x_x_to_emacs_modifiers, x_emacs_to_x_modifiers): Reject non-integers
4273 as modifiers.
4274 * xterm.h (x_x_to_emacs_modifiers): Adjust to signature change.
4275
bc827e23
PE
4276 * lisp.h (XINT) [USE_LISP_UNION_TYPE]: Cast to EMACS_INT.
4277 (XUINT) [USE_LISP_UNION_TYPE]: Cast to EMACS_UINT.
4278 Otherwise, GCC 4.6.0 warns about printf (pI, XINT (...)),
4279 presumably because the widths might not match.
4280
78eb494e
PE
4281 * window.c (size_window): Avoid needless test at loop start.
4282
04f2d78b
CB
42832011-05-18 Courtney Bane <emacs-bugs-7626@cbane.org> (tiny change)
4284
4285 * term.c (Fresume_tty): Restore hooks before reinitializing (bug#8687).
4286
d2fc7e3d 42872011-05-12 Drew Adams <drew.adams@oracle.com>
e531bdff
DA
4288
4289 * textprop.c (Fprevious_single_char_property_change): Doc fix (bug#8655).
4290
d2fc7e3d 42912011-05-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
7db47798
YM
4292
4293 * w32term.c (w32_draw_fringe_bitmap): Rename local vars `left' and
4294 `width' to `bar_area_x' and `bar_area_width', respectively.
4295 (x_scroll_run): Take account of fringe background extension.
4296
04f2d78b
CB
4297 * xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]:
4298 Rename local vars `left' and `width' to `bar_area_x' and
7db47798
YM
4299 `bar_area_width', respectively.
4300 (x_scroll_run) [USE_TOOLKIT_SCROLL_BARS]: Take account of fringe
4301 background extension.
4302
79b70037
GM
43032011-05-10 Jim Meyering <meyering@redhat.com>
4304
4305 * xdisp.c (x_intersect_rectangles): Fix typo "the the -> the".
4306
2f142cc5
JB
43072011-05-10 Juanma Barranquero <lekktu@gmail.com>
4308
4309 * image.c (Finit_image_library): Return t for built-in image types,
4310 like pbm and xbm. (Bug#8640)
4311
57679c86
AS
43122011-05-09 Andreas Schwab <schwab@linux-m68k.org>
4313
4314 * w32menu.c (set_frame_menubar): Fix submenu allocation.
4315
888c9e86
EZ
43162011-05-07 Eli Zaretskii <eliz@gnu.org>
4317
b0512a1d
EZ
4318 * w32console.c (Fset_screen_color): Doc fix.
4319 (Fget_screen_color): New function.
4320 (syms_of_ntterm): Defsubr it.
4321
7285dc67
EZ
4322 * callproc.c (call_process_cleanup) [MSDOS]: Don't close and
4323 unlink the temporary file if Fcall_process didn't create it in the
4324 first place.
4325 (Fcall_process) [MSDOS]: Don't create tempfile if stdout of the
4326 child process will be redirected to a file specified with `:file'.
888c9e86
EZ
4327 Don't try to re-open tempfile in that case, and set fd[0] to -1 as
4328 cue to call_process_cleanup not to close that handle.
4329
4d3fcc8e
BK
43302011-05-07 Ben Key <bkey76@gmail.com>
4331
4332 * makefile.w32-in: The bootstrap-temacs rule now makes use of
4333 one of two shell specific rules, either bootstrap-temacs-CMD or
4334 bootstrap-temacs-SH. The bootstrap-temacs-SH rule is identical
4335 to the previous implementation of the bootstrap-temacs rule.
4336 The bootstrap-temacs-CMD rule is similar to the previous
4337 implementation of the bootstrap-temacs rule except that it
4338 makes use of the ESC_CFLAGS variable instead of the CFLAGS
4339 variable.
4340
4341 These changes, along with some changes to nt/configure.bat,
4342 nt/gmake.defs, and nt/nmake.defs, are required to extend my
4343 earlier fix to add support for --cflags and --ldflags options
4344 that include quotes so that it works whether make uses cmd or
4345 sh as the shell.
4346
b4289b64
MA
43472011-05-06 Michael Albinus <michael.albinus@gmx.de>
4348
4349 * dbusbind.c (QCdbus_type_unix_fd): Declare static.
4350 (xd_remove_watch): Don't check QCdbus_type_unix_fd for SYMBOLP, it
4351 is a constant.
4352 (Fdbus_init_bus, xd_read_queued_messages): Bus can be a symbol or
4353 a string. Handle both cases.
4354 (Fdbus_call_method_asynchronously, Fdbus_register_signal)
4355 (Fdbus_register_method): Use Qinvalid_function.
4356
af4c0e28
JB
43572011-05-06 Juanma Barranquero <lekktu@gmail.com>
4358
4359 * makefile.w32-in: Update dependencies.
4360 (LISP_H): Add inttypes.h and stdin.h.
4361 (PROCESS_H): Add unistd.h.
4362
c51453d9
EZ
43632011-05-06 Eli Zaretskii <eliz@gnu.org>
4364
4365 * lread.c: Include limits.h (fixes the MS-Windows build broken by
4366 2011-05-06T07:13:19Z!eggert@cs.ucla.edu).
4367
8ff0ac3c 43682011-05-06 Paul Eggert <eggert@cs.ucla.edu>
c032b5f8 4369
4c4b566b
PE
4370 * image.c (Finit_image_library) [!HAVE_NTGUI]: Omit unused local.
4371
aab2b9b5
PE
4372 * term.c (vfatal): Remove stray call to va_end.
4373 It's not needed and the C Standard doesn't allow it here anyway.
4374
c378da0b
PE
4375 Use C99's va_copy to avoid undefined behavior on x86-64 GNU/Linux.
4376 * eval.c (verror): doprnt a copy of ap, not the original. (Bug#8545)
4377
288b08c7
PE
4378 * eval.c (verror): OK to create a string of up to MOST_POSITIVE_FIXNUM
4379 bytes.
4380
e3601888
PE
4381 * term.c: Don't include <stdarg.h>, as <lisp.h> does that.
4382
db6c0e74
PE
4383 * callproc.c (Fcall_process): Use 'volatile' to avoid vfork clobbering.
4384
dd5963ea
PE
4385 * process.c (Fformat_network_address): Fix typo: args2 -> *args2.
4386
88c9450f
PE
4387 * xmenu.c (set_frame_menubar): Fix typo: int * -> int (3 times).
4388
2f9442b8
PE
4389 * coding.c (detect_coding_charset): Fix typo: * 2 -> *4 (Bug#8601).
4390
c032b5f8
PE
4391 * charset.h (struct charset.code_space): Now has 15 elements, not 16.
4392 * charset.c (Fdefine_charset_internal): Don't initialize
4393 charset.code_space[15]. The value was garbage, on hosts with
2d38271b 4394 32-bit int (Bug#8600).
a108c10b
PE
4395
4396 * lread.c (read_integer): Be more consistent with string-to-number.
4397 Use string_to_number to do the actual conversion; this avoids
4398 rounding errors and fixes some other screwups. Without this fix,
4399 for example, #x1fffffffffffffff was misread as -2305843009213693952.
4400 (digit_to_number): Move earlier, for benefit of read_integer.
4401 Return -1 if the digit is out of range for the base, -2 if it is
48e400f0 4402 not a digit in any supported base. (Bug#8602)
a108c10b 4403
ad5f9eea
PE
4404 * doprnt.c (doprnt): Support arbitrary pI values, such as "I64".
4405
aec1708a
PE
4406 * dispnew.c (scrolling_window): Return 1 if we scrolled,
4407 to match comment at start of function. This also removes a
4408 GCC warning about overflow in a 32+64-bit port.
4409
47be4ab5
PE
4410 * lisp.h (EMACS_INT, EMACS_UINT, BITS_PER_EMACS_INT, pI): Simplify.
4411
371cac43
PE
4412 * dbusbind.c: Do not use XPNTR on a value that may be an integer.
4413 Reported by Stefan Monnier in
4414 <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00919.html>.
04f2d78b
CB
4415 (xd_remove_watch, Fdbus_init_bus, xd_read_queued_messages):
4416 Use SYMBOLP-guarded XSYMBOL, not XPNTR.
371cac43 4417
d01a7826
PE
4418 * lisp.h (EMACS_INTPTR): Remove. All uses changed to intptr_t.
4419 (EMACS_UINTPTR): Likewise, with uintptr_t.
4420
7fd47d5c
PE
4421 * lisp.h: Prefer 64-bit EMACS_INT if available.
4422 (EMACS_INT, EMACS_UINT, BITS_PER_EMACS_INT, pI): Define to 64-bit
4423 on 32-bit hosts that have 64-bit int, so that they can access
4424 large files.
122b0c86
PE
4425 However, temporarily disable this change unless the temporary
4426 symbol WIDE_EMACS_INT is defined.
7fd47d5c 4427
8727937b
PE
4428 * lread.c, process.c: Do not include <inttypes.h>; lisp.h does it now.
4429
8ac068ac
PE
4430 Prefer intptr_t/uintptr_t for integers the same widths as pointers.
4431 This removes an assumption that EMACS_INT and long are the same
4432 width as pointers. The assumption is true for Emacs porting targets
4433 now, but we want to make other targets possible.
4434 * lisp.h: Include <inttypes.h>, for INTPTR_MAX, UINTPTR_MAX.
4435 (EMACS_INTPTR, EMACS_UINTPTR): New macros.
4436 In the rest of the code, change types of integers that hold casted
4437 pointers to EMACS_INTPTR and EMACS_UINTPTR, systematically
4438 replacing EMACS_INT, long, EMACS_UINT, and unsigned long.
4439 (XTYPE): Don't cast arg to EMACS_UINT; normally is not needed.
4440 (XSET): Cast type of XTYPE arg to EMACS_INTPTR; it is needed here.
4441 No need to cast type when ORing.
4442 (XPNTR): Return a value of type EMACS_INTPTR or EMACS_UINTPTR.
4443 * alloc.c (lisp_align_malloc): Remove a no-longer-needed cast.
4444 * doc.c (store_function_docstring): Use EMACS_INTPTR, so as not to
4445 assume EMACS_INT is the same width as char *.
4446 * gtkutil.c (xg_gtk_scroll_destroy, xg_tool_bar_button_cb):
4447 (xg_tool_bar_callback, xg_tool_bar_help_callback, xg_make_tool_item):
4448 Remove no-longer-needed casts.
4449 (xg_create_scroll_bar, xg_tool_bar_button_cb, xg_tool_bar_callback):
4450 (xg_tool_bar_help_callback, xg_make_tool_item):
4451 Use EMACS_INTPTR to hold an integer
4452 that will be cast to void *; this can avoid a GCC warning
4453 if EMACS_INT is not the same width as void *.
4454 * menu.c (find_and_call_menu_selection): Remove no-longer-needed cast.
4455 * xdisp.c (display_echo_area_1, resize_mini_window_1):
4456 (current_message_1, set_message_1):
4457 Use a local to convert to proper width without a cast.
4458 * xmenu.c (dialog_selection_callback): Likewise.
4459
ede49d71
PE
4460 * sysdep.c (get_random): Don't assume EMACS_INT is no wider than long.
4461 Also, don't assume VALBITS / RAND_BITS is less than 5,
4462 and don't rely on undefined behavior when shifting a 1 left into
4463 the sign bit.
4464 * lisp.h (get_random): Change signature to match.
4465
2f30ecd0
PE
4466 * lread.c (hash_string): Use size_t, not int, for hash computation.
4467 Normally we prefer signed values; but hashing is special, because
4468 it's better to use unsigned division on hash table sizes so that
4469 the remainder is nonnegative. Also, size_t is the natural width
4470 for hashing into memory. The previous code used 'int', which doesn't
4471 retain enough info to hash well into very large tables.
4472 (oblookup, oblookup_last_bucket_number, Funintern): Likewise.
4473
2a866e7b
PE
4474 * dbusbind.c: Don't possibly lose pointer info when converting.
4475 (xd_remove_watch, Fdbus_init_bus, xd_read_queued_messages):
4476 Use XPNTR rather than XHASH, so that the high-order bits of
4477 the pointer aren't lost when converting through void *.
4478
51639eac
PE
4479 * eval.c (Fautoload): Don't double-shift a pointer.
4480
92394119
PE
4481 * fns.c (Frandom): Let EMACS_UINT be wider than unsigned long.
4482
dbdb9a7c
JB
44832011-05-06 Juanma Barranquero <lekktu@gmail.com>
4484
4485 * gnutls.c (DEF_GNUTLS_FN):
4486 * image.c (DEF_IMGLIB_FN): Make function pointers static.
4487
db7a0b4f
AS
44882011-05-05 Andreas Schwab <schwab@linux-m68k.org>
4489
4490 * lread.c (lisp_file_lexically_bound_p): Stop scanning at end
4491 marker. (Bug#8610)
4492
f7ff1b0f 44932011-05-05 Eli Zaretskii <eliz@gnu.org>
fab624aa
EZ
4494
4495 * w32heap.c (allocate_heap) [USE_LISP_UNION_TYPE || USE_LSB_TAG]:
4496 New version that can reserve upto 2GB of heap space.
4497
f7ff1b0f 44982011-05-05 Chong Yidong <cyd@stupidchicken.com>
45cb8994
CY
4499
4500 * nsfns.m (Fns_read_file_name): Doc fix (Bug#8534).
4501
639c109b
TZ
45022011-05-05 Teodor Zlatanov <tzz@lifelogs.com>
4503
4504 * gnutls.c (fn_gnutls_certificate_set_x509_key_file): Add alias to
4505 `gnutls_certificate_set_x509_key_file'.
4506
d2127135
JB
45072011-05-05 Juanma Barranquero <lekktu@gmail.com>
4508
4509 * makefile.w32-in ($(BLD)/image.$(O), $(BLD)/process.$(O)):
4510 Update dependencies.
4511
e968f4f3
JB
45122011-05-04 Juanma Barranquero <lekktu@gmail.com>
4513
4514 * gnutls.h (emacs_gnutls_write, emacs_gnutls_read):
4515 * gnutls.c (emacs_gnutls_write, emacs_gnutls_read):
4516 Remove unused parameter `fildes'.
4517 * process.c (read_process_output, send_process): Don't pass it.
4518
84d358f0
JB
45192011-05-04 Juanma Barranquero <lekktu@gmail.com>
4520
4521 Fix previous change: the library cache is defined in w32.c.
4522 * image.c (CACHE_IMAGE_TYPE) [!HAVE_NTGUI]: Define to noop.
4523 (Finit_image_library): Wrap Vlibrary_cache on "#ifdef HAVE_NTGUI".
4524
0898ca10
JB
45252011-05-04 Juanma Barranquero <lekktu@gmail.com>
4526
4527 Implement dynamic loading of GnuTLS on Windows.
4528
4529 * gnutls.h (GNUTLS_EMACS_ERROR_NOT_LOADED): New macro.
4530 (emacs_gnutls_write, emacs_gnutls_read): Mark as extern.
4531 (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno):
4532 Declare.
4533
4534 * gnutls.c (Qgnutls_dll): Define.
4535 (DEF_GNUTLS_FN, LOAD_GNUTLS_FN): New macros.
4536 (gnutls_*): Declare function pointers.
4537 (init_gnutls_functions): New function to initialize function pointers.
4538 (emacs_gnutls_handshake, Fgnutls_error_string, Fgnutls_deinit)
4539 (emacs_gnutls_global_init, Fgnutls_bye): Use function pointers.
4540 (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno):
4541 Wrappers for gnutls_record_check_pending and gnutls_transport_set_errno.
4542 (emacs_gnutls_write, emacs_gnutls_read)
4543 (emacs_gnutls_handle_error, Fgnutls_error_fatalp)
4544 (Fgnutls_available_p): New function.
4545 (Fgnutls_boot): Call Fgnutls_available_p. Use function pointers.
4546 (syms_of_gnutls) <Qgnutls_dll>: Initialize and staticpro it.
4547 (syms_of_gnutls) <Sgnutls_available_p>: defsubr it.
4548
4549 * image.c: Include w32.h.
4550 (Vimage_type_cache): Delete.
4551 (syms_of_image) <Vimage_type_cache>: Don't initialize and staticpro it.
4552 (CACHE_IMAGE_TYPE, Finit_image_library): Use Vlibrary_cache instead.
4553 (w32_delayed_load): Move to w32.c.
4554
4555 * w32.h (VlibraryCache, QCloaded_from, w32_delayed_load): Declare.
4556
4557 * w32.c (QCloaded_from, Vlibrary_cache): Define.
4558 (w32_delayed_load): Move from image.c. When loading a library, record
4559 its filename in the :loaded-from property of the library id.
4560 (globals_of_w32) <QCloaded_from, Vlibrary_cache>:
4561 Initialize and staticpro them.
4562 (emacs_gnutls_pull, emacs_gnutls_push): Call emacs_gnutls_* functions.
4563
4564 * process.c: Include lisp.h before w32.h, not after.
4565 (wait_reading_process_output): Call emacs_gnutls_record_check_pending
4566 instead of gnutls_record_check_pending.
4567
4568 * callproc.c, emacs.c: Include lisp.h before w32.h, not after.
4569
ff4de4aa
TZ
45702011-05-04 Teodor Zlatanov <tzz@lifelogs.com>
4571
4572 * gnutls.c (Fgnutls_boot): Support :keylist and :crlfiles options
4573 instead of :keyfiles. Give GnuTLS the keylist and the CRL lists
4574 as passed in.
4575
abe95abb
JD
45762011-05-03 Jan Djärv <jan.h.d@swipnet.se>
4577
4578 * xterm.c (x_set_frame_alpha): Do not set property on anything
4579 else than FRAME_X_OUTER_WINDOW (Bug#8608).
4580
e16e55d4
JB
45812011-05-02 Juanma Barranquero <lekktu@gmail.com>
4582
4583 * sysdep.c (get_tty_size) [WINDOWSNT]: Implement. (Bug#8596)
4584
bafcf6a5
JB
45852011-05-02 Juanma Barranquero <lekktu@gmail.com>
4586
4587 * gnutls.c (Qgnutls_log_level, Qgnutls_code, Qgnutls_anon)
4588 (Qgnutls_x509pki, Qgnutls_e_interrupted, Qgnutls_e_again)
4589 (Qgnutls_e_invalid_session, Qgnutls_e_not_ready_for_handshake)
4590 (gnutls_global_initialized, Qgnutls_bootprop_priority)
4591 (Qgnutls_bootprop_trustfiles, Qgnutls_bootprop_keyfiles)
4592 (Qgnutls_bootprop_callbacks, Qgnutls_bootprop_loglevel)
4593 (Qgnutls_bootprop_hostname, Qgnutls_bootprop_verify_flags)
4594 (Qgnutls_bootprop_verify_error, Qgnutls_bootprop_verify_hostname_error)
4595 (Qgnutls_bootprop_callbacks_verify): Make static.
4596
e7a6747f
AS
45972011-05-01 Andreas Schwab <schwab@linux-m68k.org>
4598
19ed11ba
AS
4599 * callproc.c: Indentation fixup.
4600
e7a6747f 4601 * sysdep.c (wait_for_termination_1): Make static.
04f2d78b
CB
4602 (wait_for_termination, interruptible_wait_for_termination):
4603 Move after wait_for_termination_1.
e7a6747f 4604
1ef14cb4
LMI
46052011-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
4606
4607 * sysdep.c (interruptible_wait_for_termination): New function
4608 which is like wait_for_termination, but allows keyboard
4609 interruptions.
4610
4611 * callproc.c (Fcall_process): Add (:file "file") as an option for
4612 the STDOUT buffer.
4613 (Fcall_process_region): Ditto.
4614
330d880c
EZ
46152011-04-30 Eli Zaretskii <eliz@gnu.org>
4616
8db90b73
EZ
4617 * dosfns.c (Fint86, Fdos_memget, Fdos_memput): Use `ASIZE (FOO)'
4618 rather than `XVECTOR (FOO)->size'.
4619
330d880c
EZ
4620 * process.c: Remove HAVE_INTTYPES_H condition from inclusion of
4621 inttypes.h, as a gnulib replacement is used if it not available in
4622 system headers.
4623
15cbd324
EZ
46242011-04-21 Eli Zaretskii <eliz@gnu.org>
4625
4626 Lift the MOST_POSITIVE_FIXNUM/4 limitation on visited files.
4627 * fileio.c (Finsert_file_contents): Don't limit file size to 1/4
4628 of MOST_POSITIVE_FIXNUM. (Bug#8528)
4629
4630 * coding.c (coding_alloc_by_realloc): Error out if destination
4631 will grow beyond MOST_POSITIVE_FIXNUM.
4632 (decode_coding_emacs_mule): Abort if there isn't enough place in
4633 charbuf for the composition carryover bytes. Reserve an extra
4634 space for up to 2 characters produced in a loop.
4635 (decode_coding_iso_2022): Abort if there isn't enough place in
4636 charbuf for the composition carryover bytes.
4637
46382011-04-21 Eli Zaretskii <eliz@gnu.org>
afda1437 4639
ae940cca
EZ
4640 * doprnt.c (doprnt) [!HAVE_LONG_LONG_INT]: Error out instead of
4641 aborting when %lld or %lll format is passed.
4642 [!HAVE_UNSIGNED_LONG_LONG_INT]: Error out instead of aborting when
4643 %llo or %llx format is passed. (Bug#8545)
4644
03ab8921
EZ
4645 * window.c (window_scroll_line_based): Use a marker instead of
4646 simple variables to record original value of point. (Bug#7952)
4647
afda1437
EZ
4648 * doprnt.c (doprnt): Fix the case where a multibyte sequence
4649 produced by %s or %c overflows available buffer space. (Bug#8545)
4650
f76dee0c
PE
46512011-04-28 Paul Eggert <eggert@cs.ucla.edu>
4652
4653 * doprnt.c (doprnt): Omit useless test; int overflow check (Bug#8545).
283cdbef 4654 (SIZE_MAX): Move defn after all includes, as they might #define it.
f76dee0c 4655
fdc5744d
JB
46562011-04-28 Juanma Barranquero <lekktu@gmail.com>
4657
4658 * w32.c (init_environment): Warn about defaulting HOME to C:\.
4659
638f053a
JB
46602011-04-28 Juanma Barranquero <lekktu@gmail.com>
4661
4662 * keyboard.c (Qdelayed_warnings_hook): Define.
4663 (command_loop_1): Run `delayed-warnings-hook'
4664 if Vdelayed_warnings_list is non-nil.
4665 (syms_of_keyboard) <delayed-warnings-hook>: DEFSYM it.
4666 (syms_of_keyboard) <delayed-warnings-list>: DEFVAR_LISP it.
4667
d178f871
EZ
46682011-04-28 Eli Zaretskii <eliz@gnu.org>
4669
4670 * doprnt.c (doprnt): Don't return value smaller than the buffer
4671 size if the message was truncated. (Bug#8545).
4672
b124fd93
JB
46732011-04-28 Juanma Barranquero <lekktu@gmail.com>
4674
4675 * w32fns.c (Fx_change_window_property, Fx_delete_window_property)
4676 (Fx_window_property): #if-0 the whole functions, not just the bodies.
4677
e810457d
PE
46782011-04-27 Paul Eggert <eggert@cs.ucla.edu>
4679
4680 * doprnt.c (doprnt): Support "ll" length modifier, for long long.
4681
ea51cceb
JB
46822011-04-27 Juanma Barranquero <lekktu@gmail.com>
4683
4684 * makefile.w32-in: Update dependencies.
4685
94dcfacf
EZ
46862011-04-27 Eli Zaretskii <eliz@gnu.org>
4687
4688 Improve `doprnt' and its usage. (Bug#8545)
4689 * doprnt.c (doprnt): Make sure `format' is never accessed beyond
4690 `format_end'. Remove support for %l as a conversion specifier.
4691 Don't use xrealloc. Improve diagnostics when the %l size modifier
4692 is used. Update the commentary.
4693
4694 * eval.c (verror): Simplify calculation of size_t.
4695
4696 * coding.c (Ffind_operation_coding_system): Fix diagnostic error
4697 messages.
4698
f61f41d7
PE
46992011-04-27 Yoshiaki Kasahara <kasahara@nc.kyushu-u.ac.jp> (tiny change)
4700
4701 * buffer.c (init_buffer) [USE_MMAP_FOR_BUFFERS]: Adjust to aliasing
4702 change.
4703
96fb4434
PE
47042011-04-27 Paul Eggert <eggert@cs.ucla.edu>
4705
4706 * nsmenu.m: Replace all uses of XVECTOR with ASIZE and AREF.
4707 This makes this file independent of the recent pseudovector change.
4708
671875da 47092011-04-26 Paul Eggert <eggert@cs.ucla.edu>
eab3844f 4710
69e9b5a3
PE
4711 * keyboard.c (handle_user_signal): Fix pointer signedness problem.
4712
b5f869a7 4713 * gnutls.c (emacs_gnutls_handle_error): Remove unused local.
7754e151 4714 (Fgnutls_boot): gnutls_certificate_verify_peers2 wants unsigned *.
8d4c3955 4715 Remove unused local.
c8926152 4716 (emacs_gnutls_write): Don't use uninitialized rtnval if nbyte <= 0.
080e5a8d 4717
841a1577 4718 * lisp.h: Fix a problem with aliasing and vector headers. (Bug#8546)
04f2d78b
CB
4719 GCC 4.6.0 optimizes based on type-based alias analysis.
4720 For example, if b is of type struct buffer * and v of type struct
eab3844f
PE
4721 Lisp_Vector *, then gcc -O2 was incorrectly assuming that &b->size
4722 != &v->size, and therefore "v->size = 1; b->size = 2; return
4723 v->size;" must therefore return 1. This assumption is incorrect
4724 for Emacs, since it type-puns struct Lisp_Vector * with many other
4725 types. To fix this problem, this patch adds a new type struct
f904488f 4726 vectorlike_header that documents the constraints on layout of vectors
eab3844f
PE
4727 and pseudovectors, and helps optimizing compilers not get fooled
4728 by Emacs's type punning. It also adds the macros XSETTYPED_PVECTYPE
4729 XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
f904488f
PE
4730 * lisp.h (XSETTYPED_PVECTYPE): New macro, specifying the name of
4731 the size member.
eab3844f
PE
4732 (XSETPVECTYPE): Rewrite in terms of new macro.
4733 (XSETPVECTYPESIZE): New macro, specifying both type and size.
4734 This is a bit clearer, and further avoids the possibility of
4735 undesirable aliasing.
4736 (XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
f904488f 4737 (XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR.
eab3844f
PE
4738 (XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
4739 since Lisp_Subr is a special case (no "next" field).
04f2d78b
CB
4740 (ASIZE): Now uses header.size rather than size.
4741 All previous uses of XVECTOR (foo)->size replaced to use this macro,
f904488f
PE
4742 to avoid the hassle of writing XVECTOR (foo)->header.size.
4743 (struct vectorlike_header): New type.
eab3844f
PE
4744 (TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
4745 object, to help avoid aliasing.
4746 (PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
4747 (SUBRP): Likewise, since Lisp_Subr is a special case.
4748 * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
4749 (struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
4750 (struct Lisp_Hash_Table): Combine first two members into a single
f904488f 4751 struct vectorlike_header member. All uses of "size" and "next" members
eab3844f
PE
4752 changed to be "header.size" and "header.next".
4753 * buffer.h (struct buffer): Likewise.
4754 * font.h (struct font_spec, struct font_entity, struct font): Likewise.
4755 * frame.h (struct frame): Likewise.
4756 * process.h (struct Lisp_Process): Likewise.
4757 * termhooks.h (struct terminal): Likewise.
4758 * window.c (struct save_window_data, struct saved_window): Likewise.
4759 * window.h (struct window): Likewise.
4760 * alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
4761 Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
4762 * buffer.c (init_buffer_once): Likewise.
4763 * lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
4764 special case.
4765 * process.c (Fformat_network_address): Use local var for size,
4766 for brevity.
4767
0df1eac5
PE
4768 * bytecode.c (exec_byte_code): Don't use XVECTOR before CHECK_VECTOR.
4769
847ab9d1 4770 Make the Lisp reader and string-to-float more consistent (Bug#8525)
452f4150
PE
4771 * data.c (atof): Remove decl; no longer used or needed.
4772 (digit_to_number): Move to lread.c.
4773 (Fstring_to_number): Use new string_to_number function, to be
4774 consistent with how the Lisp reader treats infinities and NaNs.
4775 Do not assume that floating-point numbers represent EMACS_INT
4776 without losing information; this is not true on most 64-bit hosts.
4777 Avoid double-rounding errors, by insisting on integers when
4778 parsing non-base-10 numbers, as the documentation specifies.
4779 * lisp.h (string_to_number): New decl, replacing ...
4780 (isfloat_string): Remove.
bc0a5c13 4781 * lread.c: Include <inttypes.h>, for uintmax_t and strtoumax.
d78050d6 4782 (read1): Do not accept +. and -. as integers; this
452f4150
PE
4783 appears to have been a coding error. Similarly, do not accept
4784 strings like +-1e0 as floating point numbers. Do not report
4785 overflow for integer overflows unless the base is not 10 which
4786 means we have no simple and reliable way to continue.
4787 Break out the floating-point parsing into a new
4788 function string_to_number, so that Fstring_to_number parses
4789 floating point numbers consistently with the Lisp reader.
04f2d78b 4790 (digit_to_number): Move here from data.c. Make it static inline.
452f4150
PE
4791 (E_CHAR, EXP_INT): Remove, replacing with ...
4792 (E_EXP): New macro, to solve the "1.0e+" problem mentioned below.
4793 (string_to_number): New function, replacing isfloat_string.
4794 This function checks for valid syntax and produces the resulting
4795 Lisp float number too. Rework it so that string-to-number
bc0a5c13 4796 no longer mishandles examples like "1.0e+". Use strtoumax,
d78050d6
PE
4797 so that overflow for non-base-10 numbers is reported only when
4798 there's no portable and simple way to convert to floating point.
452f4150 4799
67769ffc
PE
4800 * textprop.c (set_text_properties_1): Rewrite for clarity,
4801 and to avoid GCC warning about integer overflow.
4802
c20db43f
PE
4803 * intervals.h (struct interval): Use EMACS_INT for members
4804 where EMACS_UINT might cause problems. See
4805 <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00514.html>.
4806 (CHECK_TOTAL_LENGTH): Remove cast to EMACS_INT; no longer needed.
4807 * intervals.c (interval_deletion_adjustment): Now returns EMACS_INT.
4808 All uses changed.
37aa2f85
PE
4809 (offset_intervals): Tell GCC not to worry about length overflow
4810 when negating a negative length.
c20db43f 4811
2538aa2f
PE
4812 * alloc.c (overrun_check_malloc, overrun_check_realloc): Now static.
4813 (overrun_check_free): Likewise.
4814
f2d3008d
PE
4815 * alloc.c (SDATA_SIZE) [!GC_CHECK_STRING_BYTES]: Avoid runtime check
4816 in the common case where SDATA_DATA_OFFSET is a multiple of Emacs
4817 word size.
4818
ec8df744
PE
4819 * gnutls.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10.
4820 (gnutls_make_error): Rename local to avoid shadowing.
4821 (gnutls_emacs_global_deinit): ifdef out; not used.
4822 (Fgnutls_boot): Use const for pointer to readonly storage.
4823 Comment out unused local. Fix pointer signedness problems.
4824
640ee02d
PE
4825 * lread.c (openp): Don't stuff size_t into an 'int'.
4826 Use <= on length, not < on length + 1, to avoid GCC 4.6.0 warning
4827 about possible signed overflow.
4828
6048fb2a
PE
4829 * gtkutil.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10.
4830 (GDK_KEY_g): Don't define if already defined.
4831 (xg_prepare_tooltip): Avoid pointer signedness problem.
4832 (xg_set_toolkit_scroll_bar_thumb): Redo to avoid two casts.
4833
fa3c87e1
PE
4834 * process.c (Fnetwork_interface_info): Avoid left-shift undefined
4835 behavior with 1 << 31. GCC 4.6.0 warns about this on 32-bit hosts.
4836
2172544b
PE
4837 * xfns.c (Fx_window_property): Simplify a bit,
4838 to make a bit faster and to avoid GCC 4.6.0 warning.
4839 * xselect.c (x_get_window_property, x_handle_dnd_message): Likewise.
4840
9b821a21
PE
4841 * fns.c (internal_equal): Don't assume size_t fits in int.
4842
3c616cfa
PE
4843 * alloc.c (compact_small_strings): Tighten assertion a little.
4844
c2982e87
PE
4845 Replace pEd with more-general pI, and fix some printf arg casts.
4846 * lisp.h (pI): New macro, generalizing old pEd macro to other
4847 conversion specifiers. For example, use "...%"pI"d..." rather
4848 than "...%"pEd"...".
4849 (pEd): Remove. All uses replaced with similar uses of pI.
4850 * src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h: Likewise.
4851 * alloc.c (check_pure_size): Don't overflow by converting size to int.
4852 * bidi.c (bidi_dump_cached_states): Use pI to avoid cast.
4853 * data.c (Fnumber_to_string): Use pI instead of if-then-else-abort.
4854 * dbusbind.c (xd_append_arg): Use pI to avoid cast.
4855 (Fdbus_method_return_internal, Fdbus_method_error_internal): Likewise.
4856 * font.c (font_unparse_xlfd): Avoid potential buffer overrun on
4857 64-bit hosts.
4858 (font_unparse_xlfd, font_unparse_fcname): Use pI to avoid casts.
4859 * keyboard.c (record_char, modify_event_symbol): Use pI to avoid casts.
4860 * print.c (safe_debug_print, print_object): Likewise.
4861 (print_object): Don't overflow by converting EMACS_INT or EMACS_UINT
4862 to int.
6f04d126
PE
4863 Use pI instead of if-then-else-abort. Use %p to avoid casts,
4864 avoiding the 0 flag, which is not portable.
c2982e87
PE
4865 * process.c (Fmake_network_process): Use pI to avoid cast.
4866 * region-cache.c (pp_cache): Likewise.
4867 * xdisp.c (decode_mode_spec): Likewise.
4868 * xrdb.c (x_load_resources) [USE_MOTIF]: Use pI to avoid undefined
4869 behavior on 64-bit hosts with printf arg.
6f04d126 4870 * xselect.c (x_queue_event): Use %p to avoid casts, avoiding 0 flag.
c2982e87
PE
4871 (x_stop_queuing_selection_requests): Likewise.
4872 (x_get_window_property): Don't truncate byte count to an 'int'
4873 when tracing.
0b432f21 4874
5e073ec7
PE
4875 * frame.c (frame_name_fnn_p): Get rid of strtol, which isn't right
4876 here, since it parses constructs like leading '-' and spaces,
4877 which are not wanted; and it overflows with large numbers.
4878 Instead, simply match F[0-9]+, which is what is wanted anyway.
4879
36372bf9
PE
4880 * alloc.c: Remove unportable assumptions about struct layout.
4881 (SDATA_SELECTOR, SDATA_DATA_OFFSET): New macros.
4882 (SDATA_OF_STRING, SDATA_SIZE, allocate_string_data):
4883 (allocate_vectorlike, make_pure_vector): Use the new macros,
4884 plus offsetof, to remove unportable assumptions about struct layout.
4885 These assumptions hold on all porting targets that I know of, but
4886 they are not guaranteed, they're easy to remove, and removing them
4887 makes further changes easier.
4888
0b432f21
PE
4889 * alloc.c (BLOCK BYTES): Fix typo by changing "ablock" to "ablocks".
4890 This doesn't fix a bug but makes the code clearer.
bfd1c781
PE
4891 (string_overrun_cookie): Now const. Use initializers that
4892 don't formally overflow signed char, to avoid warnings.
000098c1
PE
4893 (allocate_string_data) [GC_CHECK_STRING_OVERRUN]: Fix typo that
4894 can cause Emacs to crash when string overrun checking is enabled.
c7bda33c
PE
4895 (allocate_buffer): Don't assume sizeof (struct buffer) is a
4896 multiple of sizeof (EMACS_INT); it need not be, if
4897 alignof(EMACS_INT) < sizeof (EMACS_INT).
d0f4e1f5 4898 (check_sblock, check_string_bytes, check_string_free_list): Protoize.
0b432f21 4899
895009e1
JB
49002011-04-26 Juanma Barranquero <lekktu@gmail.com>
4901
4902 * keyboard.c (QCrtl): Rename from Qrtl. All uses changed.
4903
6a7a1b0b
TZ
49042011-04-26 Teodor Zlatanov <tzz@lifelogs.com>
4905
4906 * gnutls.c (emacs_gnutls_handshake): Return an error if we're not
b5f869a7 4907 supposed to be handshaking. (Bug#8556)
6a7a1b0b
TZ
4908 Reported by Paul Eggert <eggert@cs.ucla.edu>.
4909
841a1577 49102011-04-26 Daniel Colascione <dan.colascione@gmail.com>
0438ce91
DC
4911
4912 * lisp.h (Qdebug): List symbol.
895009e1 4913 * eval.c (Qdebug): Restore global linkage.
0438ce91
DC
4914 * keyboard.c (debug-on-event): New variable.
4915 (handle_user_signal): Break into debugger when debug-on-event
4916 matches the current signal symbol.
4917
f2d3ba6f
DN
49182011-04-25 Dan Nicolaescu <dann@ics.uci.edu>
4919
4920 * alloc.c (check_sblock, check_string_bytes)
4921 (check_string_free_list): Convert to standard C.
4922
42ce4c63
TZ
49232011-04-25 Teodor Zlatanov <tzz@lifelogs.com>
4924
4925 * w32.c (emacs_gnutls_push): Fix typo.
4926
825cd63c
EZ
49272011-04-25 Eli Zaretskii <eliz@gnu.org>
4928
fb11d64d
EZ
4929 * gnutls.c (emacs_gnutls_handshake): Avoid compiler warnings about
4930 "cast to pointer from integer of different size".
4931
825cd63c
EZ
4932 Improve doprnt and its use in verror. (Bug#8545)
4933 * doprnt.c (doprnt): Document the set of format control sequences
4934 supported by the function. Use SAFE_ALLOCA instead of always
4935 using `alloca'.
4936
4937 * eval.c (verror): Don't limit the buffer size at size_max-1, that
4938 is one byte too soon. Don't use xrealloc; instead xfree and
4939 xmalloc anew.
4940
e061a11b
TZ
49412011-04-24 Teodor Zlatanov <tzz@lifelogs.com>
4942
4943 * gnutls.h: Add GNUTLS_STAGE_CALLBACKS enum to denote we're in the
4944 callbacks stage.
4945
4946 * gnutls.c: Renamed global_initialized to
4947 gnutls_global_initialized. Added internals for the
4948 :verify-hostname-error, :verify-error, and :verify-flags
4949 parameters of `gnutls-boot' and documented those parameters in the
4950 docstring. Start callback support.
9173deec
JB
4951 (emacs_gnutls_handshake): Add Woe32 support. Retry handshake
4952 unless a fatal error occurred. Call gnutls_alert_send_appropriate
4953 on error. Return error code.
e061a11b
TZ
4954 (emacs_gnutls_write): Call emacs_gnutls_handle_error.
4955 (emacs_gnutls_read): Likewise.
4956 (Fgnutls_boot): Return handshake error code.
4957 (emacs_gnutls_handle_error): New function.
4958 (wsaerror_to_errno): Likewise.
4959
4960 * w32.h (emacs_gnutls_pull): Add prototype.
4961 (emacs_gnutls_push): Likewise.
4962
4963 * w32.c (emacs_gnutls_pull): New function for GnuTLS on Woe32.
4964 (emacs_gnutls_push): Likewise.
4965
49662011-04-24 Claudio Bley <claudio.bley@gmail.com> (tiny change)
4967
4968 * process.c (wait_reading_process_output): Check if GnuTLS
4969 buffered some data internally if no FDs are set for TLS
4970 connections.
4971
4972 * makefile.w32-in (OBJ2): Add gnutls.$(O).
4973 (LIBS): Link to USER_LIBS.
4974 ($(BLD)/gnutls.$(0)): New target.
4975
fa6996bc
EZ
49762011-04-24 Eli Zaretskii <eliz@gnu.org>
4977
eb35682e
EZ
4978 * xdisp.c (handle_single_display_spec): Rename the
4979 display_replaced_before_p argument into display_replaced_p, to
4980 make it consistent with the commentary. Fix typos in the
4981 commentary.
4982
e2ad650c
EZ
4983 * textprop.c (syms_of_textprop): Remove dead code.
4984 (copy_text_properties): Delete obsolete commentary about an
4985 interface that was deleted long ago. Fix typos in the description
4986 of arguments.
4987
1b2de274
EZ
4988 * msdos.c (XMenuActivate, XMenuAddSelection): Adjust argument list
4989 to changes in oldXMenu/XMenu.h from 2011-04-16.
4990 <menu_help_message, prev_menu_help_message>: Constify.
4991 (IT_menu_make_room): menu->help_text is now `const char **';
4992 adjust.
4993
4994 * msdos.h (XMenuActivate, XMenuAddSelection): Adjust prototypes
4995 to changes in oldXMenu/XMenu.h from 2011-04-16.
4996 (struct XMenu): Declare `help_text' `const char **'.
4997
4998 * xfaces.c <Qunspecified>: Make extern again.
4999
5000 * syntax.c: Include sys/types.h before including regex.h, as
5001 required by Posix.
5002
762b15be
EZ
5003 * doc.c (get_doc_string): Improve the format passed to `error'.
5004
5005 * doprnt.c (doprnt): Improve commentary.
5006
5007 * term.c (init_tty) [MSDOS]: Fix 1st argument to maybe_fatal.
5008
5009 * Makefile.in (TAGS): Depend on $(M_FILE) and $(S_FILE), and scan
5010 them with etags.
5011
f1052e5d
EZ
5012 * makefile.w32-in (globals.h): Add a dummy recipe, to make any
5013 changes in globals.h immediately force recompilation.
762b15be
EZ
5014 (TAGS): Depend on $(CURDIR)/m/intel386.h and
5015 $(CURDIR)/s/ms-w32.h.
5016 (TAGS-gmake): Scan $(CURDIR)/m/intel386.h and $(CURDIR)/s/ms-w32.h.
f1052e5d 5017
fa6996bc
EZ
5018 * character.c (Fchar_direction): Function deleted.
5019 (syms_of_character): Don't defsubr it.
5020 <char-direction-table>: Deleted.
5021
e6c3da20
EZ
50222011-04-23 Eli Zaretskii <eliz@gnu.org>
5023
5024 Fix doprnt so it could be used again safely in `verror'. (Bug#8435)
5025 * doprnt.c: Include limits.h.
5026 (SIZE_MAX): New macro.
04f2d78b
CB
5027 (doprnt): Return a size_t value. 2nd arg is now size_t.
5028 Many local variables are now size_t instead of int or unsigned.
e6c3da20
EZ
5029 Improve overflow protection. Support `l' modifier for integer
5030 conversions. Support %l conversion. Don't assume an EMACS_INT
5031 argument for integer conversions and for %c.
5032
5033 * lisp.h (doprnt): Restore prototype.
5034
5035 * makefile.w32-in ($(BLD)/callint.$(O)): Depend on
5036 $(SRC)/character.h.
5037
5038 * Makefile.in (base_obj): Add back doprnt.o.
5039
5040 * deps.mk (doprnt.o): Add back prerequisites.
5041 (callint.o): Depend on character.h.
5042
5043 * eval.c (internal_lisp_condition_case): Include the handler
5044 representation in the error message.
5045 (verror): Call doprnt instead of vsnprintf. Fix an off-by-one bug
5046 when breaking from the loop.
5047
5048 * xdisp.c (vmessage): Call doprnt instead of vsnprintf.
5049
5050 * callint.c (Fcall_interactively): When displaying error message
5051 about invalid control letter, pass the character's codepoint, not
5052 a pointer to its multibyte form. Improve display of the character
5053 in octal and display also its hex code.
5054
5055 * character.c (char_string): Use %x to display the (unsigned)
5056 codepoint of an invalid character, to avoid displaying a bogus
5057 negative value.
5058
5059 * font.c (check_otf_features): Pass SDATA of SYMBOL_NAME to
5060 `error', not SYMBOL_NAME itself.
5061
5062 * coding.c (Fencode_sjis_char, Fencode_big5_char): Use %c for
5063 character arguments to `error'.
5064
5065 * charset.c (check_iso_charset_parameter): Fix incorrect argument
5066 to `error' in error message about FINAL_CHAR argument. Make sure
5067 FINAL_CHAR is a character, and use %c when it is passed as
5068 argument to `error'.
5069
4ffd0d6b 50702011-04-23 Eli Zaretskii <eliz@gnu.org>
97a93095
EZ
5071
5072 * s/ms-w32.h (localtime): Redirect to sys_localtime.
5073
5074 * w32.c: Include <time.h>.
5075 (sys_localtime): New function.
5076
4ffd0d6b 50772011-04-23 Chong Yidong <cyd@stupidchicken.com>
c17819f4
CY
5078
5079 * xdisp.c (init_xdisp): Initialize echo_area_window (Bug#6451).
5080
4ffd0d6b 5081 * buffer.c (syms_of_buffer): Doc fix (Bug#6902).
aac0c6e3 5082
4ffd0d6b 50832011-04-23 Samuel Thibault <sthibault@debian.org> (tiny change)
aac0c6e3 5084
4ffd0d6b
GM
5085 * sysdep.c (wait_for_termination): On GNU Hurd, kill returns -1 on
5086 zombies (Bug#8467).
aac0c6e3 5087
04c56954
EZ
50882011-04-19 Eli Zaretskii <eliz@gnu.org>
5089
5090 * syntax.h (SETUP_SYNTAX_TABLE_FOR_OBJECT): Fix setting of
5091 gl_state.e_property when gl_state.object is Qt.
5092
5093 * insdel.c (make_gap_larger): Remove limitation of buffer size
5094 to <= INT_MAX.
5095
16a43933
CY
50962011-04-18 Chong Yidong <cyd@stupidchicken.com>
5097
5098 * xdisp.c (lookup_glyphless_char_display)
5099 (produce_glyphless_glyph): Handle cons cell entry in
5100 glyphless-char-display.
5101 (Vglyphless_char_display): Document it.
5102
5103 * term.c (produce_glyphless_glyph): Handle cons cell entry in
5104 glyphless-char-display.
5105
4581706e
CY
51062011-04-17 Chong Yidong <cyd@stupidchicken.com>
5107
5108 * xdisp.c (get_next_display_element): Remove unnecessary ifdefs.
5109
5110 * termhooks.h (FRAME_WINDOW_P): Remove duplicated definitions.
5111
5112 * dispextern.h (FACE_SUITABLE_FOR_ASCII_CHAR_P): Add missing
5113 definition for no-X builds.
5114
4887c6e2 51152011-04-16 Paul Eggert <eggert@cs.ucla.edu>
764430a3 5116
fd35b6f9
PE
5117 Static checks with GCC 4.6.0 and non-default toolkits.
5118
5c1ccb01
PE
5119 * s/sol2-6.h, s/unixware.h (PTY_TTY_NAME_SPRINTF): Protoize decl.
5120
006c5daa
PE
5121 * process.c (keyboard_bit_set): Define only if SIGIO.
5122 (send_process_trap): Mark it with NO_RETURN if it doesn't return.
5123 (send_process): Repair possible setjmp clobbering.
5124
efc736d3
PE
5125 * s/usg5-4-common.h (SETUP_SLAVE_PTY): Don't pass extra arg to 'fatal'.
5126
4e2fe2e6
PE
5127 * eval.c: Include <stdio.h>, for vsnprintf on non-GNU/Linux hosts.
5128
f97334a2
PE
5129 * data.c (arith_error): Mark with NO_RETURN if it doesn't return.
5130
4e75f29d
PE
5131 * alloc.c (bytes_used_when_full, SPARE_MEMORY, BYTES_USED):
5132 Define only if needed.
5133
90efadd1
PE
5134 * sysdep.c (_FILE_OFFSET_BITS): Make this hack even uglier
5135 by pacifying GCC about it. Maybe it's time to retire it?
875975e9 5136 * xfaces.c (USG, __TIMEVAL__): Likewise.
90efadd1 5137
3c647824
PE
5138 * dispextern.h (struct redisplay_interface): Rename param
5139 to avoid shadowing.
e264f262 5140 * termhooks.h (struct terminal): Likewise.
761383f4 5141 * xterm.c (xembed_send_message): Likewise.
3c647824 5142
b58c5c4a
PE
5143 * insdel.c (make_gap_smaller): Define only if
5144 USE_MMAP_FOR_BUFFERS || REL_ALLOC || DOUG_LEA_MALLOC.
5145
cad59032
PE
5146 * keyboard.c (read_char): Make a var volatile so longjmp won't clobber
5147 it.
5148
c339dc2e
PE
5149 * emacs.c (MAX_HEAP_BSS_DIFF, my_edata): Move to where they're used,
5150 so that we aren't warned about unused symbols.
5151
91a3e27b
PE
5152 * xfns.c (Fx_file_dialog): Rename local to avoid shadowing.
5153
399c71d3 5154 * xdisp.c (x_produce_glyphs): Mark var as initialized (Bug#8512).
7a3fb125 5155
8ffc96f5
PE
5156 * xfns.c (x_real_positions): Mark locals as initialized.
5157
eef9bc79
PE
5158 * xmenu.c (xmenu_show): Don't use uninitialized vars.
5159
098db9dd
PE
5160 * xterm.c: Fix problems found by static analysis with other toolkits.
5161 (toolkit_scroll_bar_interaction): Define and use only if USE_X_TOOLKIT.
dda3aedd
PE
5162 (x_dispatch_event): Declare static if USE_GTK, and
5163 define if USE_GTK || USE_X_TOOLKIT.
098db9dd 5164 (SET_SAVED_BUTTON_EVENT): Define only if USE_X_TOOLKIT || USE_GTK.
dda3aedd 5165 * xterm.h (x_dispatch_event): Extern only if USE_X_TOOLKIT.
841a1577
JB
5166 * xterm.c, xterm.h (x_mouse_leave): Bring this function back, but only
5167 if defined HAVE_MENUS && !defined USE_X_TOOLKIT && !defined USE_GTK.
098db9dd 5168
eb18f6cc
PE
5169 * xmenu.c (menu_help_callback): Pointer type fixes.
5170 Use const pointers when pointing at readonly data. Avoid pointer
5171 signedness clashes.
5172 (FALSE): Remove unused macro.
5173 (update_frame_menubar): Remove unused decl.
5174
1fe72bf8
PE
5175 * xfns.c (Fx_hide_tip): Move locals to avoid shadowing.
5176
60d9e1db
PE
5177 * menu.c (push_submenu_start, push_submenu_end): Do not define unless
5178 USE_X_TOOLKIT || USE_GTK || HAVE_NS || defined HAVE_NTGUI.
5179 (single_menu_item): Rename local to avoid shadowing.
5180
39261c26
PE
5181 * keyboard.c (make_lispy_event): Remove unused local var.
5182
018c5e19
PE
5183 * frame.c, frame.h (x_get_resource_string): Bring this back, but
5184 only if HAVE_X_WINDOWS && !USE_X_TOOLKIT.
5185
63d2b86e
PE
5186 * bitmaps: Change bitmaps from unsigned char back to the X11
5187 compatible char. Avoid the old compiler warnings about
5188 out-of-range initializers by using, for example, '\xab' rather
5189 than 0xab.
5190
aefd87e1
PE
5191 * xgselect.c (xgselect_initialize): Check vs interface
5192 even if ! (defined (USE_GTK) || defined (HAVE_GCONF)).
5193
bf501fb9
PE
5194 * xmenu.c (xmenu_show): Rename parm to avoid shadowing.
5195
e9829fdf
PE
5196 * xterm.c (x_create_toolkit_scroll_bar): Use const * for pointers
5197 to read-only memory.
5198
1086c095
PE
5199 * fns.c (vector): Remove; this old hack is no longer needed.
5200
2baccd04 5201 * xsmfns.c (create_client_leader_window): Rename shadowing arg.
401f10cb 5202 Remove unused var.
dde42981 5203 (gdk_x11_set_sm_client_id) [!USE_GTK]: Don't define.
2baccd04 5204
72391843 5205 * xrdb.c (x_load_resources): Omit unused local.
3565b346 5206
436c16df 5207 * xfns.c (free_frame_menubar, atof): Remove duplicate decls.
8a94ea33 5208 (x_window): Rename locals to avoid shadowing.
dc5ddd85 5209 (USG): Use the kludged USG macro, to pacify gcc.
436c16df 5210
92bb796d 5211 * xterm.c (x_alloc_nearest_color_for_widget): Remove; unused.
bbbef9e1 5212 (x_term_init): Remove local to avoid shadowing.
92bb796d 5213
764430a3 5214 * xfns.c, xterm.c (_XEditResCheckMessages): Protoize decl.
4887c6e2
PE
5215
5216 * xdisp.c, dispextern.h (set_vertical_scroll_bar): Now extern if
5217 USE_TOOLKIT_SCROLL_BARS && !USE_GTK, as xterm.c needs it then.
5218
d1dfb56c
EZ
52192011-04-16 Eli Zaretskii <eliz@gnu.org>
5220
c4354cb4
EZ
5221 * gnutls.c (Fgnutls_boot): Don't pass Lisp_Object to `error'.
5222
d1dfb56c
EZ
5223 Fix regex.c, syntax.c and friends for buffers > 2GB.
5224 * syntax.h (struct gl_state_s): Declare character position members
5225 EMACS_INT.
5226
5227 * syntax.c (update_syntax_table): Declare 2nd argument EMACS_INT.
5228
04f2d78b
CB
5229 * textprop.c (verify_interval_modification, interval_of):
5230 Declare arguments EMACS_INT.
d1dfb56c
EZ
5231
5232 * intervals.c (adjust_intervals_for_insertion): Declare arguments
5233 EMACS_INT.
5234
5235 * intervals.h (CHECK_TOTAL_LENGTH): Cast to EMACS_INT, not `int'.
5236
5237 * indent.c (Fvertical_motion): Local variable it_start is now
5238 EMACS_INT.
5239
5240 * regex.c (re_match, re_match_2, re_match_2_internal)
5241 (bcmp_translate, regcomp, regexec, print_double_string)
5242 (group_in_compile_stack, re_search, re_search_2, regex_compile)
5243 (re_compile_pattern, re_exec): Declare arguments and local
5244 variables `size_t' and `ssize_t' and return values `regoff_t', as
5245 appropriate.
5246 (POP_FAILURE_REG_OR_COUNT) <pfreg>: Declare `long'.
5247 (CHECK_INFINITE_LOOP) <failure>: Declare `ssize_t'.
5248 <compile_stack_type>: `size' and `avail' are now `size_t'.
5249
5250 * regex.h <regoff_t>: Use ssize_t, not int.
5251 (re_search, re_search_2, re_match, re_match_2): Arguments that
5252 specify buffer/string position and length are now ssize_t and
5253 size_t. Return type is regoff_t.
5254
613052cd
BK
52552011-04-16 Ben Key <bkey76@gmail.com>
5256
5257 * nsfont.m: Fixed bugs in ns_get_family and
5258 ns_descriptor_to_entity that were caused by using free to
5259 deallocate memory blocks that were allocated by xmalloc (via
5260 xstrdup). This caused Emacs to crash when compiled with
5261 XMALLOC_OVERRUN_CHECK defined (when Emacs was configured with
5262 --enable-checking=xmallocoverrun). xfree is now used to
5263 deallocate these memory blocks.
5264
4170f62f 52652011-04-15 Paul Eggert <eggert@cs.ucla.edu>
3e047f51 5266
71b41406
PE
5267 * sysdep.c (emacs_read): Remove unnecessary check vs MAX_RW_COUNT.
5268
9587a89d
PE
5269 emacs_write: Accept and return EMACS_INT for sizes.
5270 See http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00514.html
5271 et seq.
5272 * gnutls.c, gnutls.h (emacs_gnutls_read, emacs_gnutls_write):
5273 Accept and return EMACS_INT.
5274 (emacs_gnutls_write): Return the number of bytes written on
5275 partial writes.
5276 * sysdep.c, lisp.h (emacs_read, emacs_write): Likewise.
273a5f82
PE
5277 (emacs_read, emacs_write): Remove check for negative size, as the
5278 Emacs source code has been audited now.
9587a89d
PE
5279 * sysdep.c (MAX_RW_COUNT): New macro, to work around kernel bugs.
5280 (emacs_read, emacs_write): Use it.
273a5f82
PE
5281 * process.c (send_process): Adjust to the new signatures of
5282 emacs_write and emacs_gnutls_write. Do not attempt to store
5283 a byte offset into an 'int'; it might overflow.
9587a89d 5284 See http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00483.html
273a5f82 5285
3e047f51
PE
5286 * sound.c: Don't assume sizes fit in 'int'.
5287 (struct sound_device.period_size, alsa_period_size):
9c3c56a7 5288 Return EMACS_INT, not int.
3e047f51 5289 (struct sound_device.write, vox_write, alsa_write):
9c3c56a7
PE
5290 Accept EMACS_INT, not int.
5291 (wav_play, au_play): Use EMACS_INT to store sizes and to
3e047f51
PE
5292 record read return values.
5293
cc39a9db
BK
52942011-04-15 Ben Key <bkey76@gmail.com>
5295
c9d0ec6d
JB
5296 * keyboard.c (Qundefined): Don't declare static since it is used
5297 in nsfns.m.
5298 * xfaces.c (Qbold, Qexpanded, Qitalic, Qcondensed): Don't declare
5299 static since they are used in nsfont.m.
cc39a9db 5300
6c60eb9f
SM
53012011-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
5302
5303 * process.c (Qprocessp): Don't declare static.
5304 * lisp.h (Qprocessp): Declare again.
5305
7990b61a
JB
53062011-04-15 Juanma Barranquero <lekktu@gmail.com>
5307
5308 * font.c (Qopentype): Don't make static (used from w32uniscribe.c).
5309
5d4cb038
PE
53102011-04-14 Paul Eggert <eggert@cs.ucla.edu>
5311
8bd7b830 5312 Improve C-level modularity by making more things 'static'.
cd64ea1d 5313
e3b27b31
PE
5314 Don't publish debugger-only interfaces to other modules.
5315 * lisp.h (safe_debug_print, debug_output_compilation_hack):
5316 (verify_bytepos, count_markers): Move decls to the only modules
5317 that need them.
5318 * region-cache.h (pp_cache): Likewise.
5319 * window.h (check_all_windows): Likewise.
5320 * marker.c, print.c, region-cache.c, window.c: Decls moved here.
5321
5d4cb038
PE
5322 * sysdep.c (croak): Now static, if
5323 defined TIOCNOTTY || defined USG5 || defined CYGWIN.
5324 * syssignal.h (croak): Declare only if not static.
69003fd8
PE
5325
5326 * alloc.c (refill_memory_reserve): Now static if
5327 !defined REL_ALLOC || defined SYSTEM_MALLOC.
5328 * lisp.h (refill_memory_reserve): Declare only if not static.
93ea6e8f 5329
e87b6180
PE
5330 * xsettings.c, xsettings.h (xsettings_get_system_normal_font):
5331 Define only if USE_LUCID.
5332
ac64929e
PE
5333 * xrdb.c (x_customization_string, x_rm_string): Now static.
5334
6f37259d
PE
5335 * xmenu.c (x_menu_wait_for_event): Export only if USE_MOTIF.
5336 * xterm.h (x_menu_wait_for_event): Declare only if USE_MOTIF.
5337
1683e3ab
PE
5338 * xdisp.c (draw_row_with_mouse_face): Now static.
5339 * dispextern.h (draw_row_with_mouse_fave): Remove decl.
5340
de9c2632
PE
5341 * window.h (check_all_windows): Mark externally visible.
5342
2b96acb7
PE
5343 * window.c (window_deletion_count): Now static.
5344
5345 * undo.c: Make symbols static if they're not exported.
5346 (last_undo_buffer, last_boundary_position, pending_boundary):
5347 Now static.
5348
50436f33
PE
5349 * textprop.c (interval_insert_behind_hooks): Now static.
5350 (interval_insert_in_front_hooks): Likewise.
5351
64520e5c
PE
5352 * term.c: Make symbols static if they're not exported.
5353 (tty_turn_off_highlight, get_tty_terminal, max_frame_cols):
5354 (max_frame_lines, tty_set_terminal_modes):
5355 (tty_reset_terminal_modes, tty_turn_off_highlight):
5356 (get_tty_terminal): Now static.
5357 (term_mouse_moveto): Do not define if HAVE_WINDOW_SYSTEM.
5358 * termhooks.h (term_mouse_moveto): Do not declare if
8bd7b830 5359 HAVE_WINDOW_SYSTEM.
64520e5c
PE
5360 * dispextern.h (tty_set_terminal_modes, tty_reset_terminal_modes):
5361 (tty_turn_off_highlight, get_tty_terminal): Remove decls.
5362
1fa53021
PE
5363 * sysdep.c: Make symbols static if they're not exported.
5364 (emacs_get_tty, emacs_set_tty, old_fcntl_flags, old_fcntl_owner):
5365 Now static.
5366 (sigprocmask_set, full_mask): Remove; unused.
5367 (wait_debugging): Mark as visible.
5368 * syssignal.h (SIGFULLMASK, full_mask): Remove decls.
5369 * systty.h (emacs_get_tty, emacs_set_tty): Remove decls.
5370
d4b43b22
PE
5371 * syntax.c (syntax_temp): Define only if !__GNUC__.
5372
b7c513d0
PE
5373 * sound.c (current_sound_device, current_sound): Now static.
5374
989b29ad
PE
5375 * search.c (searchbufs, searchbuf_head): Now static.
5376
13a55a78
PE
5377 * scroll.c (scroll_cost): Remove; unused.
5378 * dispextern.h (scroll_cost): Remove decl.
5379
de68a1fc
PE
5380 * region-cache.h (pp_cache): Mark as externally visible.
5381
40ccffa6
PE
5382 * process.c: Make symbols static if they're not exported.
5383 (process_tick, update_tick, create_process, chan_process):
5384 (Vprocess_alist, proc_buffered_char, datagram_access):
5385 (fd_callback_data, send_process_frame, process_sent_to): Now static.
5386 (deactivate_process): Mark defn as static, as well as decl.
5387 * lisp.h (create_process): Remove decl.
5388 * process.h (chan_process, Vprocess_alist): Remove decls.
5389
ad64fc97
PE
5390 * print.c: Make symbols static if they're not exported.
5391 (print_depth, new_backquote_output, being_printed, print_buffer):
5392 (print_buffer_size, print_buffer_pos, print_buffer_pos_byte):
5393 (print_interval, print_number_index, initial_stderr_stream):
5394 Now static.
5395 * lisp.h (Fprinc): Remove decl.
5396 (debug_output_compilation_hack): Mark as externally visible.
5397
adddb265
PE
5398 * sysdep.c (croak): Move decl from here to syssignal.h.
5399 * syssignal.h (croak): Put it here, so the API can be checked when
5400 'croak' is called from dissociate_if_controlling_tty.
5401
1717ede2
PE
5402 * minibuf.c: Make symbols static if they're not exported.
5403 (minibuf_save_list, choose_minibuf_frame): Now static.
5404 * lisp.h (choose_minibuf_frame): Remove decl.
5405
fa5fb2bc
PE
5406 * lisp.h (verify_bytepos, count_markers): Mark as externally visible.
5407
1e3890d1
PE
5408 * lread.c: Make symbols static if they're not exported.
5409 (read_objects, initial_obarray, oblookup_last_bucket_number):
5410 Now static.
5411 (make_symbol): Remove; unused.
5412 * lisp.h (initial_obarray, make_symbol): Remove decls.
5413
8a1414fa
PE
5414 * keyboard.c: Make symbols static if they're not exported.
5415 (single_kboard, recent_keys_index, total_keys, recent_keys):
5416 (this_command_key_count_reset, raw_keybuf, raw_keybuf_count):
5417 (this_single_command_key_start, echoing, last_auto_save):
5418 (read_key_sequence_cmd, dribble, recursive_edit_unwind):
5419 (command_loop, echo_now, keyboard_init_hook, help_char_p):
5420 (quit_throw_to_read_char, command_loop_2, top_level_1, poll_timer):
5421 (Vlispy_mouse_stem, double_click_count):
5422 Now static.
5423 (force_auto_save_soon): Define only if SIGDANGER.
5424 (ignore_mouse_drag_p): Now static if
5425 !defined HAVE_WINDOW_SYSTEM || defined USE_GTK || defined HAVE_NS.
5426 (print_help): Remove; unused.
5427 (stop_character, last_timer_event): Mark as externally visible.
5428 * keyboard.h (ignore_mouse_drag_p): Declare only if
5429 defined HAVE_WINDOW_SYSTEM && !defined USE_GTK && !defined HAVE_NS.
5430 (echo_now, help_char_p, quit_throw_to_read_char): Remove decls.
5431 * lisp.h (echoing): Remove decl.
5432 (force_auto_save_soon): Declare only if SIGDANGER.
5433 * xdisp.c (redisplay_window): Simplify code, to make it more
5434 obvious that ignore_mouse_drag_p is not accessed if !defined
5435 USE_GTK && !defined HAVE_NS.
5436
93ea6e8f
PE
5437 * intervals.c: Make symbols static if they're not exported.
5438 (merge_properties_sticky, merge_interval_right, delete_interval):
5439 Now static.
5440 * intervals.h (merge_interval_right, delete_interval): Remove decls.
5441
77382fcc
PE
5442 * insdel.c: Make symbols static if they're not exported.
5443 However, leave prepare_to_modify_buffer alone. It's never
5444 called from outside this function, but that appears to be a bug.
5445 (combine_after_change_list, combine_after_change_buffer):
4889fc82 5446 (adjust_after_replace, signal_before_change): Now static.
77382fcc
PE
5447 (adjust_after_replace_noundo): Remove; unused.
5448 * lisp.h (adjust_after_replace, adjust_after_replace_noundo):
4889fc82 5449 (signal_before_change): Remove decls.
77382fcc 5450
9306c32e
PE
5451 * indent.c (val_compute_motion, val_vmotion): Now static.
5452
cd44d2eb
PE
5453 * image.c: Make symbols static if they're not exported.
5454 * dispextern.h (x_create_bitmap_from_xpm_data): Do not declare
5455 if USE_GTK.
5456 * image.c (x_create_bitmap_from_xpm_data): Do not define if USE_GTK.
5457 (xpm_color_cache, ct_table, ct_colors_allocated): Now static.
5458
ad9a7a06
PE
5459 * fringe.c (standard_bitmaps): Now static.
5460 (max_used_fringe_bitmap): Now static, unless HAVE_NS.
5461
81626931
PE
5462 * frame.c: Make symbols static if they're not exported.
5463 (x_report_frame_params, make_terminal_frame): Now static.
5464 (get_frame_param): Now static, unless HAVE_NS.
5465 (x_fullscreen_adjust): Define if WINDOWSNT, not if HAVE_WINDOW_SYSTEM.
5466 (x_get_resource_string): Remove; not used.
5467 * frame.h (make_terminal_frame, x_report_frame_params):
5468 (x_get_resource_string); Remove decls.
5469 (x_fullscreen_adjust): Declare only if WINDOWSNT.
5470 * lisp.h (get_frame_param): Declare only if HAVE_NS.
5471
239f9db9
PE
5472 * font.c, fontset.c: Make symbols static if they're not exported.
5473 * dispextern.h (FACE_SUITABLE_FOR_ASCII_CHAR_P): New macro.
5474 (FACE_SUITABLE_FOR_CHAR_P): Use it.
5475 * font.c (font_close_object): Now static.
5476 * font.h (font_close_object): Remove.
5477 * fontset.c (FONTSET_OBJLIST): Remove.
5478 (free_realized_fontset) #if-0 the body, which does nothing.
5479 (face_suitable_for_char_p): #if-0, as it's never called.
5480 * fontset.h (face_suitable_for_char_p): Remove decl.
04f2d78b
CB
5481 * xfaces.c (face_at_string_position):
5482 Use FACE_SUITABLE_FOR_ASCII_CHAR_P, not FACE_SUITABLE_FOR_CHAR_P,
239f9db9
PE
5483 since 0 is always ASCII.
5484
dfcf3579
PE
5485 * fns.c (weak_hash_tables): Now static.
5486
5045092b
PE
5487 * fileio.c: Make symbols static if they're not exported.
5488 (auto_saving, auto_save_mode_bits, auto_save_error_occurred):
5489 (Vwrite_region_annotation_buffers): Now static.
5490
57a96f5c
PE
5491 * eval.c: Make symbols static if they're not exported.
5492 (backtrace_list, lisp_eval_depth, when_entered_debugger): Now static.
5493 * lisp.h (backtrace_list): Remove decl.
5494
35f08c38
PE
5495 * emacs.c: Make symbols static if they're not exported.
5496 (malloc_state_ptr, malloc_using_checking, syms_of_emacs):
5497 (fatal_error_code, fatal_error_signal_hook, standard_args):
5498 Now static.
5499 (fatal_error_signal): Now static, unless FLOAT_CATCH_SIGKILL.
5500 (DEFINE_DUMMY_FUNCTION): Mark function as externally visible.
5501 (__CTOR_LIST__, __DTOR_LIST__): Now externally visible.
5502 * lisp.h (fatal_error_signal_hook): Remove decl.
5503 (fatal_error_signal): Declare only if FLOAT_CATCH_SIGKILL.
5504
f44bd759
PE
5505 * editfns.c: Move a (normally-unused) function to its only use.
5506 * editfns.c, lisp.h (get_operating_system_release): Remove.
5507 * process.c (init_process) [DARWIN_OS]: Do it inline, as it is not
5508 worth the hassle of breaking this out.
5509
b532497d
PE
5510 * xterm.c: Make symbols static if they're not exported.
5511 (x_raise_frame, x_lower_frame, x_wm_set_window_state):
5512 (x_wm_set_icon_pixmap, x_initialize, XTread_socket_fake_io_error):
5513 (x_destroy_window, x_delete_display):
5514 Now static.
5515 (x_dispatch_event): Now static if ! (USE_MOTIF || USE_X_TOOLKIT).
5516 (x_mouse_leave): Remove; unused.
5517 * xterm.h (x_display_info_for_name, x_raise_frame, x_lower_frame):
5518 (x_destroy_window, x_wm_set_window_state, x_wm_set_icon_pixmap):
5519 (x_delete_display, x_initialize, x_set_border_pixel, x_screen_planes):
5520 Remove decls.
5521 (x_mouse_leave): Declare only if WINDOWSNT.
5522 (x_dispatch_event): Declare only if USE_MOTIF or USE_X_TOOLKIT.
5523 (xic_create_fontsetname): Declare only if HAVE_X_WINDOWS &&
5524 USE_X_TOOLKIT.
5525
1675728f
PE
5526 * ftxfont.c: Make symbols static if they're not exported.
5527 (ftxfont_driver): Export only if !defined HAVE_XFT && def8ined
5528 HAVE_FREETYPE.
5529 * font.h (ftxfont_driver): Likewise.
5530
e4cebfca
PE
5531 * xfns.c: Make symbols static if they're not exported.
5532 (x_last_font_name, x_display_info_for_name):
5533 (x_set_foreground_color, x_set_background_color, x_set_mouse_color):
5534 (x_set_cursor_color, x_set_border_pixel, x_set_border_color):
5535 (x_set_cursor_type, x_set_icon_type, x_set_icon_name):
5536 (x_set_scroll_bar_foreground, x_set_scroll_bar_background):
5537 (x_explicitly_set_name, x_set_title, xic_defaut_fontset, tip_timer):
5538 (last_show_tip_args): Now static.
5539 (xic_defaut_fontset, xic_create_fontsetname): Define only if
5540 defined HAVE_X_WINDOWS && defined USE_X_TOOLKIT
5541 (x_screen_planes): Remove; unused.
5542 * dispextern.h (x_screen_planes): Remove decl.
5543
5bf46f05
PE
5544 * dispnew.c: Make symbols static if they're not exported.
5545 * dispextern.h (redraw_garbaged_frames, scrolling):
5546 (increment_row_positions): Remove.
5547 * dispnew.c (new_glyph_matrix, increment_row_positions, scrolling):
5548 (delayed_size_change, glyph_matrix_count, glyph_pool_count):
5549 Now static.
5550 (redraw_garbaged_frames): Remove; unused.
5551
435f4c28
PE
5552 * xfaces.c: Make symbols static if they're not exported.
5553 * dispextern.h (ascii_face_of_lisp_face, free_realized_face):
5554 Remove decls.
5555 * xterm.h (defined_color): Remove decls.
5556 (x_free_dpy_colors): Declare only if USE_X_TOOLKIT.
5557 * xfaces.c (tty_suppress_bold_inverse_default_colors_p):
5558 (menu_face_changed_default, defined_color, free_realized_face):
5559 (x_free_dpy_colors): Define only if USE_X_TOOLKIT.
5560 (ascii_face_of_lisp_face): Remove; unused.
5561
8524aef3
PE
5562 * xdisp.c: Make symbols static if they're not exported.
5563 * dispextern.h (scratch_glyph_row, window_box_edges):
5564 (glyph_to_pixel_coords, set_cursor_from_row):
5565 (get_next_display_element, set_iterator_to_next):
5566 (highlight_trailing_whitespace, frame_to_window_pixel_xy):
5567 (show_mouse_face): Remove decls
5568 * frame.h (message_buf_print): Likewise.
5569 * lisp.h (pop_message, set_message, check_point_in_composition):
5570 Likewise.
5571 * xterm.h (set_vertical_scroll_bar): Likewise.
5572 * xdisp.c (list_of_error, Vmessage_stack, line_number_displayed):
5573 (message_buf_print, scratch_glyph_row, displayed_buffer):
5574 (set_iterator_to_next, pop_message, set_message, set_cursor_from_row):
5575 (get_next_display_element, show_mouse_face, window_box_edges):
5576 (frame_to_window_pixel_xy, check_point_in_composition):
5577 (set_vertical_scroll_bar, highlight_trailing_whitespace): Now static.
5578 (glyph_to_pixel_coords): Remove; unused.
5579
16390cd2
PE
5580 * dired.c (file_name_completion): Now static.
5581
5582 * dbusbind.c (xd_in_read_queued_messages): Now static.
5583
a25f4dfa
PE
5584 * lisp.h (circular_list_error, FOREACH): Remove; unused.
5585 * data.c (circular_list_error): Remove.
5586
14a9c8df
PE
5587 * commands.h (last_point_position, last_point_position_buffer):
5588 (last_point_position_window): Remove decls.
5589 * keyboard.c: Make these variables static.
5590
04f2d78b
CB
5591 * coding.h (coding, code_convert_region, encode_coding_gap):
5592 Remove decls.
74ab6df5
PE
5593 * coding.c (Vsjis_coding_system, Vbig5_coding_system):
5594 (iso_code_class, detect_coding, code_convert_region): Now static.
5595 (encode_coding_gap): Remove; unused.
5596
38dfbee1
PE
5597 * chartab.c (chartab_chars, chartab_bits): Now static.
5598
a2cb4e63
PE
5599 * charset.h (charset_iso_8859_1): Remove decl.
5600 * charset.c (charset_iso_8859_1, charset_emacs, map_charset_for_dump):
5601 Now static.
5602
127198fd
PE
5603 * ccl.h (check_ccl_update, Vccl_program_table): Remove decls.
5604 * ccl.c (Vccl_program_table): Now static.
5605 (check_ccl_update): Remove; unused.
5606
d85b608f
PE
5607 * category.c (SET_CATEGORY_SET, set_category_set): Move here.
5608 * category.h: ... from here.
5609 * category.c (check_category_table, set_category_set): Now static.
5610
31cd66f3
PE
5611 * casetab.c (Vascii_upcase_table, Vascii_eqv_table): Now static.
5612 * lisp.h: Remove these decls.
5613
c358e587
PE
5614 * buffer.c (buffer_count): Remove unused var.
5615
e78aecca
PE
5616 * bidi.c (bidi_dump_cached_states): Mark as externally visible,
5617 so that it's not optimized away.
5618 (bidi_ignore_explicit_marks_for_paragraph_level): Likewise.
5619 * dispextern.h (bidi_dump_cached_states): Remove, since it's
5620 exported only to the debugger.
5621
e192d7d3 5622 * atimer.c (alarm_signal_handler, run_all_atimers): Now static.
04f2d78b 5623 * atimer.h (run_all_atimers): Remove; not exported.
e192d7d3 5624
92470028
PE
5625 font.c: Make copy_font_spec and merge_font_spec ordinary C functions.
5626 * font.c (copy_font_spec): Rename from Fcopy_font_spec, since it
5627 was inaccessible from Lisp.
5628 (merge_font_spec): Likewise, renaming from Fmerge_font_spec.
5629 * font.c, font.h, fontset.c, xfaces.c, xfont.c: Change all uses.
5630
244ed907
PE
5631 alloc.c: Import and export fewer symbols, and remove unused items.
5632 * lisp.h (suppress_checking, die): Declare only if ENABLE_CHECKING
5633 is defined.
5634 (suppress_checking): Add EXTERNALLY_VISIBLE attribute, so that
5635 it's not optimized away by whole-program optimization.
5636 (message_enable_multibyte, free_misc): Remove.
5637 (catchlist, handlerlist, mark_backtrace):
5638 Declare only if BYTE_MARK_STACK.
5639 (mark_byte_stack): Likewise, fixing a ifdef-vs-if typo.
5640 * alloc.c (pure): Export only if VIRT_ADDR_VARIES is defined.
5641 (message_enable_multibyte): Remove decl.
5642 (free_misc, interval_free_list, float_block, float_block_index):
5643 (n_float_blocks, float_free_list, cons_block, cons_block_index):
5644 (cons_free_list, last_marked_index):
5645 Now static.
5646 (suppress_checking, die): Define only if ENABLE_CHECKING is defined.
5647 * eval.c (catchlist, handlerlist): Export only if BYTE_MARK_STACK.
5648 (mark_backtrace): Define only if BYTE_MARK_STACK.
5649 * xdisp.c (message_enable_multibyte): Now static.
5650
61c2b50e 5651 Declare Lisp_Object Q* variables to be 'static' if not exported.
955cbe7b
PE
5652 This makes it easier for human readers (and static analyzers)
5653 to see whether these variables are used from other modules.
5654 * alloc.c, buffer.c, bytecode.c, callint.c, casetab.c, category.c:
5655 * ccl.c, character.c, charset.c, cmds.c, coding.c, composite.c:
5656 * data.c, dbusbind.c, dired.c, editfns.c, eval.c, fileio.c, fns.c:
5657 * font.c, frame.c, fringe.c, ftfont.c, image.c, keyboard.c, keymap.c:
5658 * lread.c, macros.c, minibuf.c, print.c, process.c, search.c:
5659 * sound.c, syntax.c, textprop.c, window.c, xdisp.c, xfaces.c, xfns.c:
5660 * xmenu.c, xselect.c:
5661 Declare Q* vars static if they are not used in other modules.
5662 * ccl.h, character.h, charset.h, coding.h, composite.h, font.h:
5663 * frame.h, intervals.h, keyboard.h, lisp.h, process.h, syntax.h:
5664 Remove decls of unexported vars.
5665 * keyboard.h (EVENT_HEAD_UNMODIFIED): Remove now-unused macro.
5666
95c82688
PE
5667 * lisp.h (DEFINE_FUNC): Make sname 'static'.
5668
16a97296
PE
5669 Make Emacs functions such as Fatom 'static' by default.
5670 This makes it easier for human readers (and static analyzers)
5671 to see whether these functions can be called from other modules.
5672 DEFUN now defines a static function. To make the function external
5673 so that it can be used in other C modules, use the new macro DEFUE.
8bd7b830
PE
5674 * lisp.h (Funibyte_char_to_multibyte, Fsyntax_table_p):
5675 (Finit_image_library):
16a97296
PE
5676 (Feval_region, Fbacktrace, Ffetch_bytecode, Fswitch_to_buffer):
5677 (Ffile_executable_p, Fmake_symbolic_link, Fcommand_execute):
5678 (Fget_process, Fdocumentation_property, Fbyte_code, Ffile_attributes):
5679 Remove decls, since these functions are now static.
5680 (Funintern, Fget_internal_run_time): New decls, since these functions
5681 were already external.
95c82688 5682
16a97296
PE
5683 * alloc.c, buffer.c, callint.c, callproc.c, casefiddle.c, casetab.c:
5684 * ccl.c, character.c, chartab.c, cmds.c, coding.c, data.c, dispnew.c:
5685 * doc.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, floatfns.c:
5686 * fns.c, font.c, fontset.c, frame.c, image.c, indent.c:
5687 * keyboard.c, keymap.c, lread.c:
5688 * macros.c, marker.c, menu.c, minibuf.c, print.c, process.c, search.c:
5689 * syntax.c, term.c, terminal.c, textprop.c, undo.c:
5690 * window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, xsettings.c:
5691 Mark functions with DEFUE instead of DEFUN,
5692 if they are used in other modules.
5693 * buffer.c (Fset_buffer_major_mode, Fdelete_overlay): New forward
5694 decls for now-static functions.
5695 * buffer.h (Fdelete_overlay): Remove decl.
5696 * callproc.c (Fgetenv_internal): Mark as internal.
5697 * composite.c (Fremove_list_of_text_properties): Remove decl.
5698 (Fcomposition_get_gstring): New forward static decl.
5699 * composite.h (Fcomposite_get_gstring): Remove decl.
5700 * dired.c (Ffile_attributes): New forward static decl.
5701 * doc.c (Fdocumntation_property): New forward static decl.
5702 * eval.c (Ffetch_bytecode): New forward static decl.
5703 (Funintern): Remove extern decl; now in .h file where it belongs.
5704 * fileio.c (Fmake_symbolic_link): New forward static decl.
5705 * image.c (Finit_image_library): New forward static decl.
5706 * insdel.c (Fcombine_after_change_execute): Make forward decl static.
5707 * intervals.h (Fprevious_property_change):
5708 (Fremove_list_of_text_properties): Remove decls.
5709 * keyboard.c (Fthis_command_keys): Remove decl.
5710 (Fcommand_execute): New forward static decl.
5711 * keymap.c (Flookup_key): New forward static decl.
5712 (Fcopy_keymap): Now static.
5713 * keymap.h (Flookup_key): Remove decl.
5714 * process.c (Fget_process): New forward static decl.
5715 (Fprocess_datagram_address): Mark as internal.
5716 * syntax.c (Fsyntax_table_p): New forward static decl.
5717 (skip_chars): Remove duplicate decl.
5718 * textprop.c (Fprevious_property_change): New forward static decl.
5719 * window.c (Fset_window_fringes, Fset_window_scroll_bars):
5720 Now internal.
5721 (Fset_window_margins, Fset_window_vscroll): New forward static decls.
5722 * window.h (Fset_window_vscroll, Fset_window_margins): Remove decls.
5723
785bbd42
PE
5724 * editfns.c (Fformat): Remove unreachable code.
5725
8b913b57
AS
57262011-04-14 Andreas Schwab <schwab@linux-m68k.org>
5727
5728 * fileio.c (Finsert_file_contents): Fix typo in 2005-05-13
5729 change. (Bug#8496)
5730
a6744a35
EZ
57312011-04-13 Eli Zaretskii <eliz@gnu.org>
5732
5733 * xdisp.c (handle_invisible_prop): Don't call bidi_paragraph_init
5734 when at ZV. (Bug#8487)
5735
e7974947
AS
57362011-04-12 Andreas Schwab <schwab@linux-m68k.org>
5737
baad03f0
AS
5738 * charset.c (Fclear_charset_maps): Use xfree instead of free.
5739 (Bug#8437)
5740 * keyboard.c (parse_tool_bar_item): Likewise.
5741 * sound.c (sound_cleanup, alsa_close): Likewise.
5742 * termcap.c (tgetent): Likewise.
5743 * xfns.c (x_default_font_parameter): Likewise.
5744 * xsettings.c (read_and_apply_settings): Likewise.
5745
e7974947
AS
5746 * alloc.c (overrun_check_malloc, overrun_check_realloc)
5747 (overrun_check_free): Protoize.
5748
28272684
PE
57492011-04-12 Paul Eggert <eggert@cs.ucla.edu>
5750
5751 * sysdep.c (emacs_read, emacs_write): Check for negative sizes
5752 since callers should never pass a negative size.
5753 Change the signature to match that of plain 'read' and 'write'; see
5754 <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00397.html>.
5755 * lisp.h: Update prototypes of emacs_write and emacs_read.
5756
11997c76
EZ
57572011-04-11 Eli Zaretskii <eliz@gnu.org>
5758
5759 * xdisp.c (redisplay_window): Don't try to determine the character
5760 position of the scroll margin if the window start point w->startp
e896f03c 5761 is outside the buffer's accessible region. (Bug#8468)
11997c76 5762
8a2cbd72
EZ
57632011-04-10 Eli Zaretskii <eliz@gnu.org>
5764
5765 Fix write-region and its subroutines for buffers > 2GB.
5766 * fileio.c (a_write, e_write): Modify declaration of arguments and
5767 local variables to support buffers larger than 2GB.
5768 (Fcopy_file): Use EMACS_INT for return value of emacs_read.
5769
5770 * sysdep.c (emacs_write, emacs_read): Use ssize_t for last
5771 argument, local variables, and return value.
5772
5773 * lisp.h: Update prototypes of emacs_write and emacs_read.
5774
5775 * sound.c (vox_write): Use ssize_t for return value of emacs_write.
5776
4073e537 57772011-04-10 Paul Eggert <eggert@cs.ucla.edu>
eb3f1cc8 5778
1ebfdcb6
PE
5779 * xdisp.c (vmessage): Use memchr, not strnlen, which some hosts lack.
5780
b2ded58d
PE
5781 Fix more problems found by GCC 4.6.0's static checks.
5782
7d66342c
PE
5783 * xdisp.c (vmessage): Use a better test for character truncation.
5784
bbf47d44
PE
5785 * charset.c (load_charset_map): <, not <=, for optimization,
5786 and to avoid potential problems with integer overflow.
9248994d 5787 * chartab.c (sub_char_table_set_range, char_table_set_range): Likewise.
f9a68bc5 5788 * casetab.c (set_identity, shuffle): Likewise.
3ab1c7ce 5789 * editfns.c (Fformat): Likewise.
1e69125e 5790 * syntax.c (skip_chars): Likewise.
3befa583 5791
e3019616
PE
5792 * xmenu.c (set_frame_menubar): Allocate smaller local vectors.
5793 This also lets GCC 4.6.0 generate slightly better loop code.
5794
becfa255
PE
5795 * callint.c (Fcall_interactively): <, not <=, for optimization.
5796 (Fcall_interactively): Count the number of arguments produced,
5797 not the number of arguments given. This is simpler and lets GCC
5798 4.6.0 generate slightly better code.
5799
dae0cd48
PE
5800 * ftfont.c: Distingish more carefully between FcChar8 and char.
5801 The previous code passed unsigned char * to a functions like
5802 strlen and xstrcasecmp that expect char *, which does not
5803 conform to the C standard.
5804 (get_adstyle_property, ftfont_pattern_entity): Use FcChar8 for
5805 arguments to FcPatternGetString, and explicitly cast FcChar8 * to
5806 char * when the C standard requires it.
5807
76032d70
PE
5808 * keyboard.c (read_char): Remove unused var.
5809
eb3f1cc8
PE
5810 * eval.c: Port to Windows vsnprintf (Bug#8435).
5811 Include <limits.h>.
5812 (SIZE_MAX): Define if the headers do not.
5813 (verror): Do not give up if vsnprintf returns a negative count.
5814 Instead, grow the buffer. This ports to Windows vsnprintf, which
5815 does not conform to C99. Problem reported by Eli Zaretskii.
5816 Also, simplify the allocation scheme, by avoiding the need for
5817 calling realloc, and removing the ALLOCATED variable.
5818
70476b54
PE
5819 * eval.c (verror): Initial buffer size is 4000 (not 200) bytes.
5820
12020a9e
PE
5821 Remove invocations of doprnt, as Emacs now uses vsnprintf.
5822 But keep the doprint source code for now, as we might revamp it
5823 and use it again (Bug#8435).
ea6c7ae6
PE
5824 * lisp.h (doprnt): Remove.
5825 * Makefile.in (base_obj): Remove doprnt.o.
5826 * deps.mk (doprnt.o): Remove.
5827
5fdb398c
PE
5828 error: Print 32- and 64-bit integers portably (Bug#8435).
5829 Without this change, on typical 64-bit hosts error ("...%d...", N)
5830 was used to print both 32- and 64-bit integers N, which relied on
5831 undefined behavior.
5832 * lisp.h, src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h (pEd):
5833 New macro.
5834 * lisp.h (error, verror): Mark as printf-like functions.
5835 * eval.c (verror): Use vsnprintf, not doprnt, to do the real work.
5836 Report overflow in size calculations when allocating printf buffer.
5837 Do not truncate output string at its first null byte.
5838 * xdisp.c (vmessage): Use vsnprintf, not doprnt, to do the real work.
5839 Truncate the output at a character boundary, since vsnprintf does not
5840 do that.
5841 * charset.c (check_iso_charset_parameter): Convert internal
5842 character to string before calling 'error', since %c now has the
5843 printf meaning.
5844 * coding.c (Fdecode_sjis_char, Fdecode_big5_char): Avoid int
5845 overflow when computing char to be passed to 'error'. Do not
5846 pass Lisp_Object to 'error'; pass the integer instead.
5847 * nsfns.m (Fns_do_applescript): Use int, not long, since it's
5848 formatted with plain %d.
5849
b189fa66
PE
5850 * eval.c (internal_lisp_condition_case): Don't pass spurious arg.
5851
bff87ef0
PE
5852 * keyboard.c (access_keymap_keyremap): Print func name, not garbage.
5853
7e2cac20
PE
5854 * coding.c (Fdecode_sjis_char): Don't assume CODE fits in int.
5855
ce4d90b5
PE
5856 * xterm.c (x_catch_errors): Remove duplicate declaration.
5857
266c9547
PE
5858 * term.c (maybe_fatal): Mark its 3rd arg as a printf format, too.
5859
79c49ad2
PE
5860 * xdisp.c, lisp.h (message_nolog): Remove; unused.
5861
368f4090
JM
58622011-04-10 Jim Meyering <meyering@redhat.com>
5863
5864 use ssize_t and size_t for read- and write-like emacs_gnutls_* functions
5865 * gnutls.c (emacs_gnutls_read): Adjust signature to be more read-like:
5866 return ssize_t not "int", and use size_t as the buffer length.
5867 (emacs_gnutls_write): Likewise, and make the buffer pointer "const".
5868 * gnutls.h: Update declarations.
5869 * process.c (read_process_output): Use ssize_t, to match.
5870 (send_process): Likewise.
5871
a32d4040
CY
58722011-04-09 Chong Yidong <cyd@stupidchicken.com>
5873
5874 * image.c (Fimagemagick_types): Doc fix, and comment cleanup.
5875
8546720e 58762011-04-09 Chong Yidong <cyd@stupidchicken.com>
aac0c6e3 5877
04f2d78b
CB
5878 * ftfont.c (get_adstyle_property, ftfont_pattern_entity):
5879 Use unsigned char, to match FcChar8 type definition.
aac0c6e3 5880
8546720e
GM
5881 * xterm.c (handle_one_xevent):
5882 * xmenu.c (create_and_show_popup_menu):
5883 * xselect.c (x_decline_selection_request)
5884 (x_reply_selection_request): Avoid type-punned deref of X events.
aac0c6e3 5885
0a2f5c1a 58862011-04-09 Eli Zaretskii <eliz@gnu.org>
a53e2e89
EZ
5887
5888 Fix some uses of `int' instead of EMACS_INT.
5889 * search.c (string_match_1, fast_string_match)
5890 (fast_c_string_match_ignore_case, fast_string_match_ignore_case)
5891 (scan_buffer, find_next_newline_no_quit)
5892 (find_before_next_newline, search_command, Freplace_match)
5893 (Fmatch_data): Make some `int' variables be EMACS_INT.
5894
5895 * xdisp.c (display_count_lines): 3rd argument and return value now
5896 EMACS_INT. All callers changed.
5897 (pint2hrstr): Last argument is now EMACS_INT.
5898
5899 * coding.c (detect_coding_utf_8, detect_coding_emacs_mule)
5900 (detect_coding_iso_2022, detect_coding_sjis, detect_coding_big5)
5901 (detect_coding_ccl, detect_coding_charset, decode_coding_utf_8)
5902 (decode_coding_utf_16, decode_coding_emacs_mule)
5903 (decode_coding_iso_2022, decode_coding_sjis, decode_coding_big5)
5904 (decode_coding_ccl, decode_coding_charset)
5905 <consumed_chars, consumed_chars_base>: Declare EMACS_INT.
5906 (decode_coding_iso_2022, decode_coding_emacs_mule)
5907 (decode_coding_sjis, decode_coding_big5, decode_coding_charset)
5908 <char_offset, last_offset>: Declare EMACS_INT.
5909 (encode_coding_utf_8, encode_coding_utf_16)
5910 (encode_coding_emacs_mule, encode_invocation_designation)
5911 (encode_designation_at_bol, encode_coding_iso_2022)
5912 (encode_coding_sjis, encode_coding_big5, encode_coding_ccl)
5913 (encode_coding_raw_text, encode_coding_charset) <produced_chars>:
5914 Declare EMACS_INT.
5915 (ASSURE_DESTINATION): Declare more_bytes EMACS_INT.
5916 (encode_invocation_designation): Last argument P_NCHARS is now
5917 EMACS_INT.
5918 (decode_eol): Declare pos_byte, pos, and pos_end EMACS_INT.
5919 (produce_chars): from_nchars and to_nchars are now EMACS_INT.
5920
5921 * coding.h (struct coding_system) <head_ascii>: Declare EMACS_INT.
5922 All users changed.
5923
5924 * ccl.c (Fccl_execute_on_string): Declare some variables
5925 EMACS_INT.
5926
8546720e 59272011-04-08 Samuel Thibault <sthibault@debian.org> (tiny change)
0080dc6b
SS
5928
5929 * term.c (init_tty): Fix incorrect ifdef placement (Bug#8450).
5930
4e19a977
CS
59312011-03-19 Christoph Scholtes <cschol2112@googlemail.com>
5932
5933 * process.c (Fformat_network_address): Doc fix.
5934
87302331
R
59352011-04-08 T.V. Raman <tv.raman.tv@gmail.com> (tiny change)
5936
5937 * xml.c (parse_region): Avoid creating spurious whiespace nodes.
5938
cbb59342
CY
59392011-04-08 Chong Yidong <cyd@stupidchicken.com>
5940
5941 * keyboard.c (read_char): Call Lisp function help-form-show,
5942 instead of using internal_with_output_to_temp_buffer.
5943 (Qhelp_form_show): New var.
e0d38eeb 5944 (syms_of_keyboard): Use DEFSYM macro.
cbb59342
CY
5945
5946 * print.c (internal_with_output_to_temp_buffer): Function deleted.
5947
5948 * lisp.h (internal_with_output_to_temp_buffer): Remove prototype.
5949
e67a13ab
CY
59502011-04-06 Chong Yidong <cyd@stupidchicken.com>
5951
04f2d78b
CB
5952 * process.c (Flist_processes): Remove to Lisp.
5953 (list_processes_1): Delete.
e67a13ab 5954
973f782d
EZ
59552011-04-06 Eli Zaretskii <eliz@gnu.org>
5956
7c106b1e
EZ
5957 * msdos.c (careadlinkat, careadlinkatcwd): MS-DOS replacements.
5958
973f782d
EZ
5959 * w32.c (careadlinkat, careadlinkatcwd): New always-fail stubs.
5960
41cf7d1a 59612011-04-06 Paul Eggert <eggert@cs.ucla.edu>
27ccc379 5962
ca23cc88
PE
5963 Fix more problems found by GCC 4.6.0's static checks.
5964
f390e2d5
PE
5965 * xmenu.c (Fx_popup_dialog): Don't assume string is free of formats.
5966
42eea0d0
PE
5967 * menu.c (Fx_popup_menu): Don't assume error_name lacks printf formats.
5968
b69769da 5969 * lisp.h (message, message_nolog, fatal): Mark as printf-like.
1e973bc7 5970
f9541e84
PE
5971 * xdisp.c (vmessage): Mark as a printf-like function.
5972
13841b55
PE
5973 * term.c (vfatal, maybe_fatal): Mark as printf-like functions.
5974
c136c10f
PE
5975 * sound.c (sound_warning): Don't crash if arg contains a printf format.
5976
5e2d4a30
PE
5977 * image.c (tiff_error_handler, tiff_warning_handler): Mark as
5978 printf-like functions.
5979 (tiff_load): Add casts to remove these marks before passing them
5980 to system-supplied API.
5981
583f48b9
PE
5982 * eval.c (Fsignal): Remove excess argument to 'fatal'.
5983
b25d760e
PE
5984 * coding.c (EMIT_ONE_BYTE, EMIT_TWO_BYTES): Use unsigned, not int.
5985 This avoids several warnings with gcc -Wstrict-overflow.
d5efd1d1
PE
5986 (DECODE_COMPOSITION_RULE): If the rule is invalid, goto invalid_code
5987 directly, rather than having caller test rule sign. This avoids
5988 some unnecessary tests.
5989 * composite.h (COMPOSITION_ENCODE_RULE_VALID): New macro.
5990 (COMPOSITION_ENCODE_RULE): Arguments now must be valid. This
5991 affects only one use, in DECODE_COMPOSITION_RULE, which is changed.
b25d760e 5992
bc7b6697 5993 * xfont.c (xfont_text_extents): Remove var that was set but not used.
625a3eb1 5994 (xfont_open): Avoid unnecessary tests.
bc7b6697 5995
27ccc379
PE
5996 * composite.c (composition_gstring_put_cache): Use unsigned integer.
5997
dcd5c89a
PE
5998 * composite.h, composite.c (composition_gstring_put_cache):
5999 Use EMACS_INT, not int, for length.
6000
b13a45c6
PE
6001 * composite.h (COMPOSITION_DECODE_REFS): New macro,
6002 breaking out part of COMPOSITION_DECODE_RULE.
6003 (COMPOSITION_DECODE_RULE): Use it.
6004 * composite.c (get_composition_id): Remove unused local vars,
6005 by using the new macro.
6006
1e792e4d
PE
6007 * textprop.c (set_text_properties_1): Change while to do-while,
6008 since the condition is always true at first.
6009
dc6c6455 6010 * intervals.c (graft_intervals_into_buffer): Mark var as used.
aa86731f
PE
6011 (interval_deletion_adjustment): Return unsigned value.
6012 All uses changed.
dc6c6455 6013
aba7731a
PE
6014 * process.c (list_processes_1, create_pty, read_process_output):
6015 (exec_sentinel): Remove vars that were set but not used.
afd4052b 6016 (create_pty): Remove unnecessary "volatile"s.
bc57d757 6017 (Fnetwork_interface_info): Avoid possibility of int overflow.
82eaa333 6018 (read_process_output): Do adaptive read buffering even if carryover.
fe07cdfa 6019 (read_process_output): Simplify nbytes computation if buffered.
aba7731a 6020
fdfc4bf3
PE
6021 * bytecode.c (exec_byte_code): Rename local to avoid shadowing.
6022
fca8fe46 6023 * syntax.c (scan_words): Remove var that was set but not used.
12cbf13f 6024 (update_syntax_table): Use unsigned instead of int.
fca8fe46 6025
06a0259a 6026 * lread.c (lisp_file_lexically_bound_p): Use ints rather than endptrs.
3c346cc3 6027 (lisp_file_lexically_bound_p, read1): Use unsigned instead of int.
e6eb4e9e 6028 (safe_to_load_p): Make the end-of-loop test the inverse of the in-loop.
06a0259a 6029
e7b9e80f
PE
6030 * print.c (print_error_message): Avoid int overflow.
6031
56201685
PE
6032 * font.c (font_list_entities): Redo for clarity,
6033 so that reader need not know FONT_DPI_INDEX + 1 == FONT_SPACING_INDEX.
6034
78834453 6035 * font.c (font_find_for_lface, Ffont_get_glyphs): Remove unused vars.
790771b1 6036 (font_score): Avoid potential overflow in diff calculation.
78834453 6037
0bc0b309 6038 * fns.c (substring_both): Remove var that is set but not used.
8cd55cb4 6039 (sxhash): Redo loop for clarity and to avoid wraparound warning.
0bc0b309 6040
e610eaca
PE
6041 * eval.c (funcall_lambda): Rename local to avoid shadowing.
6042
b895abce
PE
6043 * alloc.c (mark_object_loop_halt, mark_object): Use size_t, not int.
6044 Otherwise, GCC 4.6.0 optimizes the loop check away since the check
6045 can always succeed if overflow has undefined behavior.
6046
1f1d9321 6047 * search.c (boyer_moore, wordify): Remove vars set but not used.
6f076cc7 6048 (wordify): Omit three unnecessary tests.
1f1d9321 6049
c59478bc
PE
6050 * indent.c (MULTIBYTE_BYTES_WIDTH): Don't compute wide_column.
6051 All callers changed. This avoids the need for an unused var.
6052
79b73827
PE
6053 * casefiddle.c (casify_region): Remove var that is set but not used.
6054
a4db5dfe
PE
6055 * dired.c (file_name_completion): Remove var that is set but not used.
6056
43aae36e
PE
6057 * fileio.c (Finsert_file_contents): Make EOF condition clearer.
6058
2a47c44d 6059 * fileio.c (Finsert_file_contents): Avoid signed integer overflow.
163c5f32 6060 (Finsert_file_contents): Remove unnecessary code checking fd.
2a47c44d 6061
a37c69bf
PE
6062 * minibuf.c (read_minibuf_noninteractive): Use size_t for sizes.
6063 Check for integer overflow on size calculations.
6064
328ab8e7
PE
6065 * buffer.c (Fprevious_overlay_change): Remove var that is set
6066 but not used.
6067
e5a2a5cb
PE
6068 * keyboard.c (menu_bar_items, read_char_minibuf_menu_prompt):
6069 Remove vars that are set but not used.
8d84a6eb 6070 (timer_check_2): Don't assume timer-list and idle-timer-list are lists.
6b043475 6071 (timer_check_2): Mark vars as initialized.
e5a2a5cb 6072
a60e5f68
PE
6073 * gtkutil.c (xg_get_file_with_chooser): Mark var as initialized.
6074
f661cb61 6075 * image.c (lookup_image): Remove var that is set but not used.
35fa624f 6076 (xbm_load): Use parse_p, for gcc -Werror=unused-but-set-variable.
f661cb61 6077
f0397f5a
PE
6078 * fontset.c (Finternal_char_font, Ffontset_info): Remove vars
6079 that are set but not used.
6080
8664db06 6081 * xfns.c (make_invisible_cursor): Don't return garbage
03733ee7 6082 if XCreateBitmapFromData fails (Bug#8410).
8664db06 6083
6abdaa4a
PE
6084 * xselect.c (x_get_local_selection, x_handle_property_notify):
6085 Remove vars that are set but not used.
6086
0ce7538d 6087 * xfns.c (x_create_tip_frame): Remove var that is set but not used.
6abdaa4a 6088 (make_invisible_cursor): Initialize a possibly-uninitialized variable.
0ce7538d 6089
9ae848fc
PE
6090 * xterm.c (x_scroll_bar_to_input_event) [!USE_GTK]:
6091 Remove var that is set but not used.
0b918413
PE
6092 (scroll_bar_windows_size): Now size_t, not int.
6093 (x_send_scroll_bar_event): Use size_t, not int, for sizes.
6094 Check for overflow.
9ae848fc 6095
a5a62657
PE
6096 * xfaces.c (realize_named_face): Remove vars that are set but not used.
6097 (map_tty_color) [!defined MSDOS]: Likewise.
6098
5c5cdd39
PE
6099 * term.c (tty_write_glyphs): Use size_t; this avoids overflow warning.
6100
66ebf983
PE
6101 * coding.c: Remove vars that are set but not used.
6102 (DECODE_COMPOSITION_RULE): Remove 2nd arg, which is unused.
6103 All callers changed.
6104 (decode_coding_utf_8, decode_coding_utf_16 decode_coding_emacs_mule):
6105 (decode_coding_iso_2022, encode_coding_sjis, encode_coding_big5):
6106 (decode_coding_charset): Remove vars that are set but not used.
6107
1be4d761
PE
6108 * bytecode.c (Fbyte_code) [!defined BYTE_CODE_SAFE]: Remove var
6109 that is set but not used.
6110
47553fa8
PE
6111 * print.c (print_object): Remove var that is set but not used.
6112
1f7196bf 6113 Replace 2 copies of readlink code with 1 gnulib version (Bug#8401).
d1fdcab7
PE
6114 The gnulib version avoids calling malloc in the usual case,
6115 and on 64-bit hosts doesn't have some arbitrary 32-bit limits.
6116 * fileio.c (Ffile_symlink_p): Use emacs_readlink.
6117 * filelock.c (current_lock_owner): Likewise.
6118 * lisp.h (READLINK_BUFSIZE, emacs_readlink): New function.
6119 * sysdep.c: Include allocator.h, careadlinkat.h.
6120 (emacs_no_realloc_allocator): New static constant.
6121 (emacs_readlink): New function.
fdb61804
PE
6122 * deps.mk (sysdep.o): Depend on ../lib/allocator.h and on
6123 ../lib/careadlinkat.h.
d1fdcab7 6124
f84c17c7
SM
61252011-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
6126
6127 * keyboard.c (safe_run_hook_funcall): Fix last change (don't stop at the
6128 first non-nil return value).
6129
ef3862ad
JD
61302011-04-03 Jan Djärv <jan.h.d@swipnet.se>
6131
6132 * nsterm.m (ns_update_auto_hide_menu_bar): Define MAC_OS_X_VERSION_10_6
6133 if not defined (Bug#8403).
6134
376a7006
JB
61352011-04-02 Juanma Barranquero <lekktu@gmail.com>
6136
6137 * xdisp.c (display_count_lines): Remove parameter `start',
6138 unused since 1998-01-01T02:27:27Z!rms@gnu.org. All callers changed.
6139 (get_char_face_and_encoding): Remove parameter `multibyte_p',
6140 unused since 2008-05-14T01:40:23Z!handa@m17n.org. All callers changed.
6141 (fill_stretch_glyph_string): Remove parameters `row' and `area',
6142 unused at least since Kim's GUI unification at 2003-03-16T20:45:46Z!storm@cua.dk
6143 and thereabouts. All callers changed.
6144 (get_per_char_metric): Remove parameter `f', unused since
6145 2008-05-14T01:40:23Z!handa@m17n.org. All callers changed.
6146
6ca3801d
JM
61472011-04-02 Jim Meyering <meyering@redhat.com>
6148
6149 do not dereference NULL upon failed strdup
6150 * nsfont.m (ns_descriptor_to_entity): Use xstrdup, not strdup.
6151 (ns_get_family): Likewise.
6152
d8e2b5ba
JB
61532011-04-02 Juanma Barranquero <lekktu@gmail.com>
6154
6155 * eval.c (unwind_to_catch) [DEBUG_GCPRO]: Remove redundant assignment.
6156
8c74fcbd
JD
61572011-04-02 Jan Djärv <jan.h.d@swipnet.se>
6158
6159 * nsterm.m (ns_update_auto_hide_menu_bar): Only for OSX 10.6 or
6160 later (Bug#8403).
6161
7200d79c
SM
61622011-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
6163
03408648 6164 Add lexical binding.
7200d79c 6165
03408648
SM
6166 * window.c (Ftemp_output_buffer_show): New fun.
6167 (Fsave_window_excursion):
6168 * print.c (Fwith_output_to_temp_buffer): Move to subr.el.
6169
6170 * lread.c (lisp_file_lexically_bound_p): New function.
6171 (Fload): Bind Qlexical_binding.
6172 (readevalloop): Remove `evalfun' arg.
6173 Bind Qinternal_interpreter_environment.
6174 (Feval_buffer): Bind Qlexical_binding.
6175 (defvar_int, defvar_bool, defvar_lisp_nopro, defvar_kboard):
6176 Mark as dynamic.
6177 (syms_of_lread): Declare `lexical-binding'.
6178
6179 * lisp.h (struct Lisp_Symbol): New field `declared_special'.
6180
6181 * keyboard.c (eval_dyn): New fun.
6182 (menu_item_eval_property): Use it.
ca105506
SM
6183
6184 * image.c (parse_image_spec): Use Ffunctionp.
ca105506 6185
03408648
SM
6186 * fns.c (concat, mapcar1): Accept byte-code-functions.
6187
6188 * eval.c (Fsetq): Handle lexical vars.
6189 (Fdefun, Fdefmacro, Ffunction): Make closures when needed.
6190 (Fdefconst, Fdefvaralias, Fdefvar): Mark as dynamic.
6191 (FletX, Flet): Obey lexical binding.
6192 (Fcommandp): Handle closures.
6193 (Feval): New `lexical' arg.
6194 (eval_sub): New function extracted from Feval. Use it almost
6195 everywhere where Feval was used. Look up vars in lexical env.
6196 Handle closures.
6197 (Ffunctionp): Move from subr.el.
6198 (Ffuncall): Handle closures.
6199 (apply_lambda): Remove `eval_flags'.
6200 (funcall_lambda): Handle closures and new byte-code-functions.
6201 (Fspecial_variable_p): New function.
6202 (syms_of_eval): Initialize the Vinternal_interpreter_environment var,
6203 but without exporting it to Lisp.
23aba0ea 6204
23aba0ea 6205 * doc.c (Fdocumentation, store_function_docstring):
03408648 6206 * data.c (Finteractive_form): Handle closures.
23aba0ea 6207
03408648
SM
6208 * callint.c (Fcall_interactively): Preserve lexical-binding mode for
6209 interactive spec.
ba83908c 6210
04f2d78b
CB
6211 * bytecode.c (Bstack_ref, Bstack_set, Bstack_set2, BdiscardN):
6212 New byte-codes.
03408648
SM
6213 (exec_byte_code): New function extracted from Fbyte_code to handle new
6214 calling convention for byte-code-functions. Add new byte-codes.
ba83908c 6215
03408648 6216 * buffer.c (defvar_per_buffer): Set new `declared_special' field.
e2abe5a1 6217
03408648 6218 * alloc.c (Fmake_symbol): Init new `declared_special' field.
e2abe5a1 6219
e2abce01
JB
62202011-03-31 Juanma Barranquero <lekktu@gmail.com>
6221
6222 * xdisp.c (redisplay_internal): Fix prototype.
6223
63696a73 62242011-03-31 Eli Zaretskii <eliz@gnu.org>
09725d26 6225
63696a73 6226 * xdisp.c (SCROLL_LIMIT): New macro.
04f2d78b
CB
6227 (try_scrolling): Use it when setting scroll_limit.
6228 Limit scrolling to 100 screen lines.
63696a73
EZ
6229 (redisplay_window): Even when falling back on "recentering",
6230 position point in the window according to scroll-conservatively,
6231 scroll-margin, and scroll-*-aggressively variables. (Bug#6671)
6232
6233 (try_scrolling): When point is above the window, allow searching
6234 as far as scroll_max, or one screenful, to compute vertical
6235 distance from PT to the scroll margin position. This prevents
6236 try_scrolling from unnecessarily failing when
6237 scroll-conservatively is set to a value slightly larger than the
6238 window height. Clean up the case of PT below the margin at bottom
6239 of window: scroll_max can no longer be INT_MAX. When aggressive
6240 scrolling is in use, don't let point enter the opposite scroll
6241 margin as result of the scroll.
6242 (syms_of_xdisp) <scroll-conservatively>: Document the
09725d26
EZ
6243 threshold of 100 lines for never-recentering scrolling.
6244
e4cc2dfc
JB
62452011-03-31 Juanma Barranquero <lekktu@gmail.com>
6246
6247 * dispextern.h (move_it_by_lines):
6248 * xdisp.c (move_it_by_lines): Remove parameter `need_y_p', unused
6249 since 2000-12-29T14:24:09Z!gerd@gnu.org. All callers changed.
6250 (message_log_check_duplicate): Remove parameters `prev_bol' and
6251 `this_bol', unused since 1998-01-01T02:27:27Z!rms@gnu.org. All callers changed.
6252 (redisplay_internal): Remove parameter `preserve_echo_area',
6253 unused since 1999-07-21T21:43:52Z!gerd@gnu.org. All callers changed.
6254
6255 * indent.c (Fvertical_motion):
6256 * window.c (window_scroll_pixel_based, Frecenter):
6257 Don't pass `need_y_p' to `move_it_by_lines'.
6258
1c470562
SM
62592011-03-30 Stefan Monnier <monnier@iro.umontreal.ca>
6260
44f230aa
SM
6261 * eval.c (struct backtrace): Don't cheat with negative numbers, but do
6262 steal a few bits to be more compact.
6263 (interactive_p, Fbacktrace, Fbacktrace_frame, mark_backtrace):
6264 Remove unneeded casts.
6265
1c470562
SM
6266 * bytecode.c (Fbyte_code): CAR and CDR can GC.
6267
888adce9
ZK
62682011-03-30 Zachary Kanfer <zkanfer@gmail.com> (tiny change)
6269
6270 * keyboard.c (Fexecute_extended_command): Do log the "suggest key
6271 binding" message (bug#7967).
6272
f838ed7b
PE
62732011-03-30 Paul Eggert <eggert@cs.ucla.edu>
6274
77861b95
PE
6275 Fix more problems found by GCC 4.6.0's static checks.
6276
de6dbc14
PE
6277 * unexelf.c (unexec) [! (defined _SYSTYPE_SYSV || defined __sgi)]:
6278 Remove unused local var.
6279
f838ed7b
PE
6280 * editfns.c (Fmessage_box): Remove unused local var.
6281
792c7b2b
PE
6282 * xdisp.c (try_window_reusing_current_matrix, x_produce_glyphs):
6283 (note_mode_line_or_margin_highlight, note_mouse_highlight):
6284 Omit unused local vars.
c499e557 6285 * window.c (shrink_windows): Omit unused local var.
b01a1c29 6286 * menu.c (digest_single_submenu): Omit unused local var.
0bc32927
PE
6287 * dispnew.c (update_window) [PERIODIC_PREEMPTION_CHECKING]:
6288 Omit unused local var.
6289
ba0165e1
PE
6290 * keyboard.c (parse_modifiers_uncached, parse_modifiers):
6291 Don't assume string length fits in int.
32ad8845 6292 (keyremap_step, read_key_sequence): Use size_t for sizes.
48011560 6293 (read_key_sequence): Don't check last_real_key_start redundantly.
ba0165e1 6294
3c59b4c9
PE
6295 * callproc.c (Fcall_process, Fcall_process_region): Use SAFE_ALLOCA
6296 instead of alloca (Bug#8344).
6297
a3eed478 6298 * eval.c (Fbacktrace): Don't assume nargs fits in int.
5d5d959d 6299 (Fbacktrace_frame): Don't assume nframes fits in int.
a3eed478 6300
eb4d412d
PE
6301 * syntax.c (scan_sexps_forward): Avoid pointer wraparound.
6302
1658b401
PE
6303 * xterm.c (x_make_frame_visible, same_x_server): Redo to avoid overflow
6304 concerns.
6305
6306 * term.c (produce_glyphless_glyph): Remove unnecessary test.
6307
6308 * cm.c (calccost): Turn while-do into do-while, for clarity.
44f730c8 6309
9a2c6e05
PE
6310 * keyboard.c (syms_of_keyboard): Use the same style as later
6311 in this function when indexing through an array. This also
6312 works around GCC bug 48267.
6313
03d0a109
PE
6314 * image.c (tiff_load): Fix off-by-one image count (Bug#8336).
6315
44f730c8
PE
6316 * xselect.c (x_check_property_data): Return correct size (Bug#8335).
6317
fe75f926
PE
6318 * chartab.c (sub_char_table_ref_and_range): Redo for slight
6319 efficiency gain, and to bypass a gcc -Wstrict-overflow warning.
6320
ffa8c828
PE
6321 * keyboard.c, keyboard.h (num_input_events): Now size_t.
6322 This avoids undefined behavior on integer overflow, and is a bit
6323 more convenient anyway since it is compared to a size_t variable.
6324
c5101a77
PE
6325 Variadic C functions now count arguments with size_t, not int.
6326 This avoids an unnecessary limitation on 64-bit machines, which
6327 caused (substring ...) to crash on large vectors (Bug#8344).
6328 * lisp.h (struct Lisp_Subr.function.aMANY): Now takes size_t, not int.
6329 (DEFUN_ARGS_MANY, internal_condition_case_n, safe_call): Likewise.
77861b95 6330 All variadic functions and their callers changed accordingly.
c5101a77
PE
6331 (struct gcpro.nvars): Now size_t, not int. All uses changed.
6332 * data.c (arith_driver, float_arith_driver): Likewise.
6333 * editfns.c (general_insert_function): Likewise.
6334 * eval.c (struct backtrace.nargs, interactive_p)
6335 (internal_condition_case_n, run_hook_with_args, apply_lambda)
6336 (funcall_lambda, mark_backtrace): Likewise.
6337 * fns.c (concat): Likewise.
6338 * frame.c (x_set_frame_parameters): Likewise.
6339 * fns.c (get_key_arg): Now accepts and returns size_t, and returns
6340 0 if not found, not -1. All callers changed.
6341
dd3f25f7
PE
6342 * alloc.c (garbage_collect): Don't assume stack size fits in int.
6343 (stack_copy_size): Now size_t, not int.
6344 (stack_copy, stack_copy_size): Define only if MAX_SAVE_STACK > 0.
6345
461c2ab9
JB
63462011-03-28 Juanma Barranquero <lekktu@gmail.com>
6347
6348 * coding.c (encode_designation_at_bol): Remove parameter `charbuf_end',
6349 unused since 2002-03-01T01:17:24Z!handa@m17n.org and 2008-02-01T16:01:31Z!miles@gnu.org.
6350 All callers changed.
6351
6352 * lisp.h (multibyte_char_to_unibyte):
6353 * character.c (multibyte_char_to_unibyte): Remove parameter `rev_tbl',
6354 unused since 2002-03-01T01:16:34Z!handa@m17n.org and 2008-02-01T16:01:31Z!miles@gnu.org.
6355 * character.h (CHAR_TO_BYTE8):
6356 * cmds.c (internal_self_insert):
6357 * editfns.c (general_insert_function):
6358 * keymap.c (push_key_description):
6359 * search.c (Freplace_match):
6360 * xdisp.c (message_dolog, set_message_1): All callers changed.
6361
f6d62986
SM
63622011-03-28 Stefan Monnier <monnier@iro.umontreal.ca>
6363
6364 * keyboard.c (safe_run_hook_funcall): New function.
6365 (safe_run_hooks_1, safe_run_hooks_error, safe_run_hooks): On error,
6366 don't set the hook to nil, but remove the offending function instead.
6367 (Qcommand_hook_internal): Remove, unused.
6368 (syms_of_keyboard): Don't initialize Qcommand_hook_internal nor define
6369 Vcommand_hook_internal.
6370
6371 * eval.c (enum run_hooks_condition): Remove.
6372 (funcall_nil, funcall_not): New functions.
6373 (run_hook_with_args): Call each function through a `funcall' argument.
6374 Remove `cond' argument, now redundant.
6375 (Frun_hooks, Frun_hook_with_args, Frun_hook_with_args_until_success)
6376 (Frun_hook_with_args_until_failure): Adjust accordingly.
6377 (run_hook_wrapped_funcall, Frun_hook_wrapped): New functions.
6378
1db5b1ad
JB
63792011-03-28 Juanma Barranquero <lekktu@gmail.com>
6380
6381 * dispextern.h (string_buffer_position): Remove declaration.
6382
6383 * print.c (strout): Remove parameter `multibyte', unused since
6384 1999-08-21T19:30:21Z!gerd@gnu.org. All callers changed.
6385
6386 * search.c (boyer_moore): Remove parameters `len', `pos' and `lim',
6387 never used since function introduction in 1998-02-08T21:33:56Z!rms@gnu.org.
6388 All callers changed.
6389
6390 * w32.c (_wsa_errlist): Use braces for struct initializers.
6391
6392 * xdisp.c (string_buffer_position_lim): Remove parameter `w',
6393 never used since function introduction in 2001-03-09T18:41:50Z!gerd@gnu.org.
6394 All callers changed.
6395 (string_buffer_position): Likewise. Also, make static (it's never
6396 used outside xdisp.c).
6397 (cursor_row_p): Remove parameter `w', unused since
6398 2000-10-17T16:08:57Z!gerd@gnu.org. All callers changed.
6399 (decode_mode_spec): Remove parameter `precision', introduced during
6400 Gerd Moellmann's rewrite at 1999-07-21T21:43:52Z!gerd@gnu.org, but never used.
6401 All callers changed.
6402
5ffb62aa
JD
64032011-03-27 Jan Djärv <jan.h.d@swipnet.se>
6404
6405 * nsterm.m (syms_of_nsterm): Use doc: for ns-auto-hide-menu-bar.
6406
461c2ab9 64072011-03-27 Anders Lindgren <andlind@gmail.com>
f0a1382a
JD
6408
6409 * nsterm.m (ns_menu_bar_is_hidden): New variable.
6410 (ns_constrain_all_frames, ns_menu_bar_should_be_hidden)
6411 (ns_update_auto_hide_menu_bar): New functions.
6412 (ns_update_begin): Call ns_update_auto_hide_menu_bar.
6413 (applicationDidBecomeActive): Call ns_update_auto_hide_menu_bar and
6414 ns_constrain_all_frames.
6415 (constrainFrameRect): Return at once if ns_menu_bar_should_be_hidden.
6416 (syms_of_nsterm): DEFVAR ns-auto-hide-menu-bar, init to Qnil.
6417
5c380ffb
JD
64182011-03-27 Jan Djärv <jan.h.d@swipnet.se>
6419
6420 * nsmenu.m (runDialogAt): Remove argument to timer_check.
6421
9af30bdf
GM
64222011-03-27 Glenn Morris <rgm@gnu.org>
6423
6424 * syssignal.h: Replace RETSIGTYPE with void.
6425 * atimer.c, data.c, dispnew.c, emacs.c, floatfns.c, keyboard.c:
6426 * keyboard.h, lisp.h, process.c, sysdep.c, xterm.c:
6427 Replace SIGTYPE with void everywhere.
6428 * s/usg5-4-common.h (SIGTYPE): Remove definition.
6429 * s/template.h (SIGTYPE): Remove commented out definition.
6430
e2abce01
JB
64312011-03-26 Eli Zaretskii <eliz@gnu.org>
6432
6433 * xdisp.c (redisplay_window): Don't check buffer's clip_changed
6434 flag as a prerequisite for invoking try_scrolling. (Bug#6671)
6435
f868cd8a
JB
64362011-03-26 Juanma Barranquero <lekktu@gmail.com>
6437
59eb0929
JB
6438 * w32.c (read_unc_volume): Use parameter `henum', instead of
6439 global variable `wget_enum_handle'.
6440
6441 * keymap.c (describe_vector): Remove parameters `indices' and
6442 `char_table_depth', unused since 2002-03-01T01:43:26Z!handa@m17n.org.
6443 (describe_map, Fdescribe_vector): Adjust calls to `describe_vector'.
6444
f868cd8a
JB
6445 * keyboard.h (timer_check, show_help_echo): Remove unused parameters.
6446
6447 * keyboard.c (timer_check): Remove parameter `do_it_now',
6448 unused since 1996-04-12T06:01:29Z!rms@gnu.org.
6449 (show_help_echo): Remove parameter `ok_to_overwrite_keystroke_echo',
6450 unused since 2008-04-19T19:30:53Z!monnier@iro.umontreal.ca.
6451
6452 * keyboard.c (read_char):
6453 * w32menu.c (w32_menu_display_help):
6454 * xmenu.c (show_help_event, menu_help_callback):
6455 Adjust calls to `show_help_echo'.
6456
6457 * gtkutil.c (xg_maybe_add_timer):
6458 * keyboard.c (readable_events):
6459 * process.c (wait_reading_process_output):
6460 * xmenu.c (x_menu_wait_for_event): Adjust calls to `timer_check'.
6461
6462 * insdel.c (adjust_markers_gap_motion):
6463 Remove; no-op since 1998-01-02T21:29:48Z!rms@gnu.org.
6464 (gap_left, gap_right): Don't call it.
6465
2ecf6fdb
CY
64662011-03-25 Chong Yidong <cyd@stupidchicken.com>
6467
6468 * xdisp.c (handle_fontified_prop): Discard changes to clip_changed
6469 incurred during fontification.
6470
6b1f9ba4
JB
64712011-03-25 Juanma Barranquero <lekktu@gmail.com>
6472
6473 * buffer.c (defvar_per_buffer): Remove unused parameter `doc'.
6474 (DEFVAR_PER_BUFFER): Don't pass it.
6475
6476 * dispnew.c (row_equal_p, add_row_entry): Remove unused parameter `w'.
6477 (scrolling_window): Don't pass it.
6478
0f4a96b5
JB
64792011-03-25 Juanma Barranquero <lekktu@gmail.com>
6480
6481 * dispextern.h (glyph_matric): Use #if GLYPH_DEBUG, not #ifdef.
6482
6483 * fileio.c (check_executable) [DOS_NT]: Remove unused variables `len'
6484 and `suffix'.
6485 (Fset_file_selinux_context) [HAVE_LIBSELINUX]: Move here declaration
6486 of variables specific to SELinux and computation of `encoded_absname'.
6487
6488 * image.c (XPutPixel): Remove unused variable `height'.
6489
6490 * keyboard.c (make_lispy_event): Remove unused variable `hpos'.
6491
6492 * unexw32.c (get_section_info): Remove unused variable `section'.
6493
6494 * w32.c (stat): Remove unused variables `drive_root' and `devtype'.
6495 (system_process_attributes): Remove unused variable `sess'.
6496 (sys_read): Remove unused variable `err'.
6497
6498 * w32fns.c (top): Wrap variables with #if GLYPH_DEBUG, not #ifdef.
6499 (w32_wnd_proc): Remove unused variable `isdead'.
6500 (unwind_create_frame): Use #if GLYPH_DEBUG, not #ifdef.
6501 (Fx_server_max_request_size): Remove unused variable `dpyinfo'.
6502 (x_create_tip_frame): Remove unused variable `tem'.
6503
6504 * w32inevt.c (w32_console_read_socket):
6505 Remove unused variable `no_events'.
6506
6507 * w32term.c (x_draw_composite_glyph_string_foreground):
6508 Remove unused variable `width'.
6509
1149507c
JB
65102011-03-24 Juanma Barranquero <lekktu@gmail.com>
6511
6512 * w32term.c (x_set_glyph_string_clipping):
6513 Don't pass uninitialized region to CombineRgn.
6514
9c88f339
JB
65152011-03-23 Juanma Barranquero <lekktu@gmail.com>
6516
6517 * w32fns.c (x_set_menu_bar_lines): Remove unused variable `olines'.
6518 (w32_wnd_proc): Pass NULL to Windows API, not uninitialized buffer.
6519 (Fx_close_connection): Remove unused variable `i'.
6520
6521 * w32font.c (w32font_draw): Return number of glyphs.
6522 (w32font_open_internal): Remove unused variable `i'.
6523 (w32font_driver): Add missing initializer.
6524
6525 * w32menu.c (utf8to16): Remove unused variable `utf16'.
6526 (fill_in_menu): Remove unused variable `items_added'.
6527
6528 * w32term.c (last_mouse_press_frame): Remove static global variable.
6529 (w32_clip_to_row): Remove unused variable `f'.
6530 (x_delete_terminal): Remove unused variable `i'.
6531
6532 * w32uniscribe.c (uniscribe_shape): Remove unused variable `nclusters'.
6533 (NOTHING): Remove unused static global variable.
6534 (uniscribe_check_otf): Remove unused variable `table'.
6535 (uniscribe_font_driver): Add missing initializers.
6536
dee091a3
JD
65372011-03-23 Julien Danjou <julien@danjou.info>
6538
6539 * term.c (Fsuspend_tty, Fresume_tty):
6540 * minibuf.c (read_minibuf, run_exit_minibuf_hook):
6541 * window.c (temp_output_buffer_show):
6542 * insdel.c (signal_before_change):
6543 * frame.c (Fhandle_switch_frame):
6544 * fileio.c (Fdo_auto_save):
6545 * emacs.c (Fkill_emacs):
6546 * editfns.c (save_excursion_restore):
6547 * cmds.c (internal_self_insert):
6548 * callint.c (Fcall_interactively):
6549 * buffer.c (Fkill_all_local_variables):
6550 * keyboard.c (Fcommand_execute, Fsuspend_emacs, safe_run_hooks_1):
6551 Use Frun_hooks.
0f4a96b5 6552 (command_loop_1): Use Frun_hooks. Call safe_run_hooks
dee091a3
JD
6553 unconditionnaly since it does the check itself.
6554
2c520ab5 65552011-03-23 Paul Eggert <eggert@cs.ucla.edu>
f0641eff 6556
c9c49752
PE
6557 Fix more problems found by GCC 4.5.2's static checks.
6558
8abc3f12
PE
6559 * coding.c (encode_coding_raw_text): Avoid unnecessary test
6560 the first time through the loop, since we know p0 < p1 then.
6561 This also avoids a gcc -Wstrict-overflow warning.
6562
a2d26660
PE
6563 * lisp.h (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Avoid 'int' overflow
6564 leading to a memory leak, possible in functions like
6565 load_charset_map_from_file that can allocate an unbounded number
b12ef411 6566 of objects (Bug#8318).
a2d26660 6567
916c72e9
PE
6568 * xmenu.c (set_frame_menubar): Use EMACS_UINT, not int, for indexes
6569 that could (at least in theory) be that large.
6570
19ab8a18
PE
6571 * xdisp.c (message_log_check_duplicate): Return unsigned long, not int.
6572 This is less likely to overflow, and avoids undefined behavior if
6573 overflow does occur. All callers changed. Use strtoul to scan
6574 for the unsigned long integer.
b7cbbd6f
PE
6575 (pint2hrstr): Simplify and tune code slightly.
6576 This also avoids a (bogus) GCC warning with gcc -Wstrict-overflow.
19ab8a18 6577
f0641eff
PE
6578 * scroll.c (do_scrolling): Work around GCC bug 48228.
6579 See <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48228>.
6580
7f650bb9
PE
6581 * frame.c (Fmodify_frame_parameters): Simplify loop counter.
6582 This also avoids a warning with gcc -Wstrict-overflow.
39f5e519
PE
6583 (validate_x_resource_name): Simplify count usage.
6584 This also avoids a warning with gcc -Wstrict-overflow.
7f650bb9 6585
37dd57d1
PE
6586 * fileio.c (Fcopy_file): Report error if fchown or fchmod
6587 fail (Bug#8306).
81e56e61 6588
699979fc 6589 * emacs.c (Fdaemon_initialized): Do not ignore I/O errors (Bug#8303).
dc1ca6a8 6590
401bf9b4
PE
6591 * process.c (Fmake_network_process): Use socklen_t, not int,
6592 where POSIX says socklen_t is required in portable programs.
6593 This fixes a porting bug on hosts like 64-bit HP-UX, where
591b2973 6594 socklen_t is wider than int (Bug#8277).
401bf9b4
PE
6595 (Fmake_network_process, server_accept_connection):
6596 (wait_reading_process_output, read_process_output):
6597 Likewise.
6598
b93aacde
PE
6599 * process.c: Rename or move locals to avoid shadowing.
6600 (list_processes_1, Fmake_network_process):
6601 (read_process_output_error_handler, exec_sentinel_error_handler):
6602 Rename or move locals.
4dc343ee 6603 (Fmake_network_process): Define label "retry_connect" only if needed.
0da49335 6604 (Fnetwork_interface_info): Fix pointer signedness.
f990b4e5 6605 (process_send_signal): Add cast to avoid pointer signedness problem.
7b808126 6606 (FIRST_PROC_DESC, IF_NON_BLOCKING_CONNECT): Remove unused macros.
c939f91b 6607 (create_process): Use 'volatile' to avoid vfork clobbering (Bug#8298).
b93aacde 6608
af8a867c 6609 Make tparam.h and terminfo.c consistent.
44f230aa
SM
6610 * cm.c (tputs, tgoto, BC, UP): Remove extern decls.
6611 Include tparam.h instead, since it declares them.
af8a867c
PE
6612 * cm.h (PC): Remove extern decl; tparam.h now does this.
6613 * deps.mk (cm.o, terminfo.o): Depend on tparam.h.
6614 * terminfo.c: Include tparam.h, to check interfaces.
6615 (tparm): Make 1st arg a const pointer in decl. Put it at top level.
6616 (tparam): Adjust signature to match interface in tparam.h;
6617 this removes some undefined behavior. Check that outstring and len
6618 are zero, which they always are with Emacs.
6619 * tparam.h (PC, BC, UP): New extern decls.
6620
0248044d 6621 * xftfont.c (xftfont_shape): Now static, and defined only if needed.
001a7ab4 6622 (xftfont_open): Rename locals to avoid shadowing.
0248044d 6623
8ff096c1 6624 * ftfont.c (ftfont_resolve_generic_family): Fix pointer signedness.
a00924bb
PE
6625 (ftfont_otf_capability, ftfont_shape): Omit decls if not needed.
6626 (OTF_TAG_SYM): Omit macro if not needed.
e932860f 6627 (ftfont_list): Remove unused local.
49eaafba
PE
6628 (get_adstyle_property, ftfont_pattern_entity):
6629 (ftfont_lookup_cache, ftfont_open, ftfont_anchor_point):
6630 Rename locals to avoid shadowing.
8ff096c1 6631
e2be39f6
PE
6632 * xfont.c (xfont_list_family): Mark var as initialized.
6633
c9735e30
PE
6634 * xml.c (make_dom): Now static.
6635
8f5201ae
PE
6636 * composite.c (composition_compute_stop_pos): Rename local to
6637 avoid shadowing.
b246f932
PE
6638 (composition_reseat_it): Remove unused locals.
6639 (find_automatic_composition, composition_adjust_point): Likewise.
80e079b2 6640 (composition_update_it): Mark var as initialized.
11b61122
PE
6641 (find_automatic_composition): Mark vars as initialized,
6642 with a FIXME (Bug#8290).
8f5201ae 6643
760fbc2c
PE
6644 character.h: Rename locals to avoid shadowing.
6645 * character.h (PREV_CHAR_BOUNDARY, FETCH_STRING_CHAR_ADVANCE):
6646 (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE, FETCH_CHAR_ADVANCE):
6647 (FETCH_CHAR_ADVANCE_NO_CHECK, INC_POS, DEC_POS, BUF_INC_POS):
6648 (BUF_DEC_POS): Be more systematic about renaming local temporaries
6649 to avoid shadowing.
6650
ff08eb85
PE
6651 * textprop.c (property_change_between_p): Remove; unused.
6652
fc7bf025
PE
6653 * intervals.c (interval_start_pos): Now static.
6654
235d7abc
PE
6655 * intervals.h (CHECK_TOTAL_LENGTH): Avoid empty "else".
6656
44f230aa
SM
6657 * atimer.c (start_atimer, append_atimer_lists, set_alarm):
6658 Rename locals to avoid shadowing.
3e7d6594 6659
50060332
PE
6660 * sound.c (wav_play, au_play, Fplay_sound_internal):
6661 Fix pointer signedness.
d01f234b 6662 (alsa_choose_format): Remove unused local var.
c83b8872
PE
6663 (wav_play): Initialize a variable to 0, to prevent undefined
6664 behavior (Bug#8278).
50060332 6665
c4fc4e30
PE
6666 * region-cache.c (insert_cache_boundary): Redo var to avoid shadowing.
6667
918436ed
PE
6668 * region-cache.h (pp_cache): New decl, for gcc -Wmissing-prototypes.
6669
c939f91b
PE
6670 * callproc.c (Fcall_process): Use 'volatile' to avoid vfork
6671 clobbering (Bug#8298).
b9c7f648
PE
6672 * sysdep.c (sys_subshell): Likewise.
6673 Previously, the sys_subshell 'volatile' was incorrectly IF_LINTted out.
7e9123a2 6674
6bd8c144
PE
6675 * lisp.h (child_setup): Now NO_RETURN unless DOS_NT.
6676 This should get cleaned up, so that child_setup has the
6677 same signature on all platforms.
6678
7710357c 6679 * callproc.c (call_process_cleanup): Now static.
cb1d0ef7 6680 (relocate_fd): Rename locals to avoid shadowing.
7710357c 6681
c59da222
CY
66822011-03-22 Chong Yidong <cyd@stupidchicken.com>
6683
6684 * xterm.c (x_clear_frame): Remove XClearWindow call. This appears
6685 not to be necessary, and produces flickering.
6686
66b87493
GM
66872011-03-20 Glenn Morris <rgm@gnu.org>
6688
6689 * config.in: Remove file.
6690
45b6f6d5
JB
66912011-03-20 Juanma Barranquero <lekktu@gmail.com>
6692
6693 * minibuf.c (Vcompleting_read_function): Don't declare, global variables
6694 are now in src/globals.h.
6695 (syms_of_minibuf): Remove spurious & from previous change.
6696
3ec03f7e
LL
66972011-03-20 Leo <sdl.web@gmail.com>
6698
6699 * minibuf.c (completing-read-function): New variable.
6700 (completing-read-default): Rename from completing-read.
6701 (completing-read): Call completing-read-function.
6702
b14e3e21
CY
67032011-03-19 Juanma Barranquero <lekktu@gmail.com>
6704
6705 * xfaces.c (Fx_load_color_file):
6706 Read color file from absolute filename (bug#8250).
6707
f2b726e6
JB
67082011-03-19 Juanma Barranquero <lekktu@gmail.com>
6709
6710 * makefile.w32-in: Update dependencies.
6711
09f6ff02
EZ
67122011-03-17 Eli Zaretskii <eliz@gnu.org>
6713
6714 * makefile.w32-in ($(BLD)/unexw32.$(O)): Depend on $(SRC)/unexec.h.
6715
29a6015a
PE
67162011-03-17 Paul Eggert <eggert@cs.ucla.edu>
6717
a3a6c54e
PE
6718 Fix more problems found by GCC 4.5.2's static checks.
6719
b766f867
PE
6720 * process.c (make_serial_process_unwind, send_process_trap):
6721 (sigchld_handler): Now static.
6722
be02381c
PE
6723 * process.c (allocate_pty): Let PTY_ITERATION declare iteration vars.
6724 That way, the code declares only the vars that it needs.
6725 * s/aix4-2.h (PTY_ITERATION): Declare iteration vars.
6726 * s/cygwin.h (PTY_ITERATION): Likewise.
6727 * s/darwin.h (PTY_ITERATION): Likewise.
6728 * s/gnu-linux.h (PTY_ITERATION): Likewise.
6729
57048744
PE
6730 * s/irix6-5.h (PTY_OPEN): Declare stb, to loosen coupling.
6731 * process.c (allocate_pty): Don't declare stb unless it's needed.
6732
7914961c 6733 * bytecode.c (MAYBE_GC): Rewrite so as not to use empty "else".
615f2d59
PE
6734 (CONSTANTLIM): Remove; unused.
6735 (METER_CODE, Bscan_buffer, Bread_char, Bset_mark):
6736 Define only if needed.
7914961c 6737
b3967b18
PE
6738 * unexelf.c (unexec): Name an expression,
6739 to avoid gcc -Wbad-function-cast warning.
9ae71512
PE
6740 Use a different way to cause a compilation error if anyone uses
6741 n rather than nn, a way that does not involve shadowing.
73366a00 6742 (ELF_BSS_SECTION_NAME, OLD_PROGRAM_H): Remove; unused.
b3967b18 6743
29a6015a
PE
6744 * deps.mk (unexalpha.o): Remove; unused.
6745
43cfc33e 6746 New file unexec.h, the (simple) interface for unexec (Bug#8267).
7feda0d2 6747 * unexec.h: New file.
ce701a33
PE
6748 * deps.mk (emacs.o, unexaix.o, unexcw.o, unexcoff.o, unexelf.o):
6749 (unexhp9k800.o, unexmacosx.o, unexsol.o, unexw32.o):
6750 Depend on unexec.h.
6751 * emacs.c [!defined CANNOT_DUMP]: Include unexec.h.
6752 * unexaix.c, unexcoff.c, unexcw.c, unexelf.c, unexhp9k800.c:
6753 * unexmacosx.c, unexsol.c, unexw32.c: Include unexec.h.
381259ef 6754 Change as necessary to match prototype in unexec.h.
ce701a33 6755
01f44d5a
PE
6756 * syntax.c (Fforward_comment, scan_lists): Rename locals to avoid
6757 shadowing.
4f63c6bb 6758 (back_comment, skip_chars): Mark vars as initialized.
01f44d5a 6759
a6670b0b
PE
6760 * character.h (FETCH_STRING_CHAR_ADVANCE_NO_CHECK, BUF_INC_POS):
6761 Rename locals to avoid shadowing.
6762
cef2010d 6763 * lread.c (read1): Rewrite so as not to use empty "else".
0902fe45 6764 (Fload, readevalloop, read1): Rename locals to avoid shadowing.
cef2010d 6765
d4d7173a
PE
6766 * print.c (Fredirect_debugging_output): Fix pointer signedess.
6767
f08b802a
PE
6768 * lisp.h (debug_output_compilation_hack): Add decl here, to avoid
6769 warning when compiling print.c.
6770
3ddb0639
PE
6771 * font.c (font_unparse_fcname): Abort in an "impossible" situation
6772 instead of using an uninitialized var.
5ad03b97 6773 (font_sort_entities): Mark var as initialized.
3ddb0639 6774
170a2692
PE
6775 * character.h (FETCH_CHAR_ADVANCE): Rename locals to avoid shadowing.
6776
e663c700
PE
6777 * font.c (font_unparse_xlfd): Don't mix pointers to variables with
6778 pointers to constants.
89bc529a 6779 (font_parse_fcname): Remove unused vars.
7b81e2d0 6780 (font_delete_unmatched): Now static.
ea838e10 6781 (font_get_spec): Remove; unused.
13a547c6
PE
6782 (font_style_to_value, font_prop_validate_style, font_unparse_fcname):
6783 (font_update_drivers, Ffont_get_glyphs, font_add_log):
6784 Rename or move locals to avoid shadowing.
e663c700 6785
2a80c887 6786 * fns.c (require_nesting_list, require_unwind): Now static.
612f56df 6787 (Ffillarray): Rename locals to avoid shadowing.
2a80c887 6788
1384fa33 6789 * floatfns.c (domain_error2): Define only if needed.
a885e2ed 6790 (Ffrexp, Fldexp): Rename locals to avoid shadowing.
1384fa33 6791
8b2c52e9
PE
6792 * alloc.c (mark_backtrace): Move decl from here ...
6793 * lisp.h: ... to here, so that it can be checked.
6794
475545b5 6795 * eval.c (call_debugger, do_debug_on_call, grow_specpdl): Now static.
d28a2170 6796 (Fdefvar): Rewrite so as not to use empty "else".
cfcbfb1a
PE
6797 (lisp_indirect_variable): Name an expression,
6798 to avoid gcc -Wbad-function-cast warning.
1faed8ae 6799 (Fdefvar): Rename locals to avoid shadowing.
475545b5 6800
b1349114 6801 * callint.c (quotify_arg, quotify_args): Now static.
a3e8cbda 6802 (Fcall_interactively): Rename locals to avoid shadowing.
b0e80955 6803 Use const pointer when appropriate.
b1349114 6804
a2928364
PE
6805 * lisp.h (get_system_name, get_operating_system_release):
6806 Move decls here, to check interfaces.
6807 * process.c (get_operating_system_release): Move decl to lisp.h.
6808 * xrdb.c (get_system_name): Likewise.
63c5d10b
PE
6809 * editfns.c (init_editfns, Fuser_login_name, Fuser_uid):
6810 (Fuser_real_uid, Fuser_full_name): Remove unnecessary casts,
6811 some of which prompt warnings from gcc -Wbad-function-cast.
545b49b4
PE
6812 (Fformat_time_string, Fencode_time, Finsert_char):
6813 (Ftranslate_region_internal, Fformat):
6814 Rename or remove local vars to avoid shadowing.
9710023e 6815 (Ftranslate_region_internal): Mark var as initialized.
63c5d10b 6816
a415e694
PE
6817 * doc.c (Fdocumentation, Fsnarf_documentation): Move locals to
6818 avoid shadowing.
6819
8ef4622d
PE
6820 * lisp.h (eassert): Check that the argument compiles, even if
6821 ENABLE_CHECKING is not defined.
6822
946f9a5b
PE
6823 * data.c (Findirect_variable): Name an expression, to avoid
6824 gcc -Wbad-function-cast warning.
112396d6 6825 (default_value, arithcompare, arith_driver, arith_error): Now static.
b9b84fa9 6826 (store_symval_forwarding): Rename local to avoid shadowing.
44f230aa
SM
6827 (Fmake_variable_buffer_local, Fmake_local_variable):
6828 Mark variables as initialized.
52746918 6829 (do_blv_forwarding, do_symval_forwarding): Remove; unused.
946f9a5b 6830
e5aab7e7 6831 * alloc.c (check_cons_list): Do not define unless GC_CHECK_CONS_LIST.
ae35e756
PE
6832 (Fmake_vector, Fvector, Fmake_byte_code, Fgarbage_collect):
6833 Rename locals to avoid shadowing.
dff45157
PE
6834 (mark_stack): Move local variables into the #ifdef region where
6835 they're used.
7bc26fdb
PE
6836 (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Define only if
6837 ! defined SYSTEM_MALLOC && ! defined SYNC_INPUT, as they are not
6838 needed otherwise.
6839 (CHECK_ALLOCATED): Define only if GC_CHECK_MARKED_OBJECTS.
6840 (GC_STRING_CHARS): Remove; not used.
d40d4be1 6841 (Fmemory_limit): Cast sbrk's returned value to char *.
ae35e756 6842
e5aab7e7
PE
6843 * lisp.h (check_cons_list): Declare if GC_CHECK_CONS_LIST; this
6844 avoids undefined behavior in theory.
6845
4da60324
PE
6846 * regex.c (IF_LINT): Add defn, for benefit of ../lib-src.
6847
88043301
PE
6848 Use functions, not macros, for up- and down-casing (Bug#8254).
6849 * buffer.h (DOWNCASE_TABLE, UPCASE_TABLE, DOWNCASE, UPPERCASEP):
6850 (NOCASEP, LOWERCASEP, UPCASE, UPCASE1): Remove. All callers changed
6851 to use the following functions instead of these macros.
6852 (downcase): Adjust to lack of DOWNCASE_TABLE. Return int, not
6853 EMACS_INT, since callers assume the returned value fits in int.
6854 (upcase1): Likewise, for UPCASE_TABLE.
6855 (uppercasep, lowercasep, upcase): New static inline functions.
0da09c43 6856 * editfns.c (Fchar_equal): Remove no-longer-needed workaround for
db69b0cd 6857 the race-condition problem in the old DOWNCASE.
88043301 6858
19ed5445
PE
6859 * regex.c (CHARSET_LOOKUP_RANGE_TABLE_RAW, POP_FAILURE_REG_OR_COUNT):
6860 Rename locals to avoid shadowing.
6861 (regex_compile, re_match_2_internal): Move locals to avoid shadowing.
abbd1bcf
PE
6862 (regex_compile, re_search_2, re_match_2_internal):
6863 Remove unused local vars.
952db0d7
PE
6864 (FREE_VAR): Rewrite so as not to use empty "else",
6865 which gcc can warn about.
da053e48 6866 (regex_compile, re_match_2_internal): Mark locals as initialized.
b313f9d8
PE
6867 (RETALLOC_IF): Define only if needed.
6868 (WORDCHAR_P): Likewise. This one is never needed, but is used
6869 only in a comment talking about a compiler bug, so put inside
6870 the #if 0 of that comment.
6871 (CHARSET_LOOKUP_BITMAP, FAIL_STACK_FULL, RESET_FAIL_STACK):
6872 (PUSH_FAILURE_ELT, BUF_PUSH_3, STOP_ADDR_VSTRING):
6873 Remove; unused.
19ed5445 6874
1f3561e4 6875 * search.c (boyer_moore): Rename locals to avoid shadowing.
76ef09b7
PE
6876 * character.h (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE):
6877 (PREV_CHAR_BOUNDARY): Likewise.
1f3561e4 6878
ded6f8f7
PE
6879 * search.c (simple_search): Remove unused var.
6880
dbd37a95
PE
6881 * dired.c (compile_pattern): Move decl from here ...
6882 * lisp.h: ... to here, so that it can be checked.
6883 (struct re_registers): New forward decl.
6884
7e47afad
PE
6885 * character.h (INC_POS, DEC_POS): Rename locals to avoid shadowing.
6886
85f24f61
PE
6887 * indent.c (MULTIBYTE_BYTES_WIDTH): New args bytes, width.
6888 All uses changed.
6889 (MULTIBYTE_BYTES_WIDTH, scan_for_column, compute_motion):
6890 Rename locals to avoid shadowing.
5671df8f 6891 (Fvertical_motion): Mark locals as initialized.
85f24f61 6892
181aa2be 6893 * casefiddle.c (casify_object, casify_region): Now static.
e45a141a 6894 (casify_region): Mark local as initialized.
181aa2be 6895
930d429c
PE
6896 * cmds.c (internal_self_insert): Rename local to avoid shadowing.
6897
7082eac6
PE
6898 * lisp.h (GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR, GCPRO5_VAR, GCPRO6_VAR):
6899 New macros, so that the caller can use some names other than
6900 gcpro1, gcpro2, etc.
6901 (GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6): Reimplement in terms
6902 of the new macros.
6903 (GCPRO1_VAR, UNGCPRO_VAR): Change the meaning of the second
6904 argument, for consistency with GCPRO2_VAR, etc: it is now the
6905 prefix of the variable, not the variable itself. All uses
6906 changed.
38b2c076
PE
6907 * dired.c (directory_files_internal, file_name_completion):
6908 Rename locals to avoid shadowing.
6909
15206ed9
PE
6910 Fix a race condition diagnosed by gcc -Wsequence-point (Bug#8254).
6911 An expression of the form (DOWNCASE (x) == DOWNCASE (y)), found in
6912 dired.c's scmp function, had undefined behavior.
6913 * lisp.h (DOWNCASE_TABLE, UPCASE_TABLE, DOWNCASE, UPPERCASEP):
6914 (NOCASEP, LOWERCASEP, UPCASE, UPCASE1): Move from here ...
6915 * buffer.h: ... to here, because these macros use current_buffer,
6916 and the new implementation with inline functions needs to have
6917 current_buffer in scope now, rather than later when the macros
6918 are used.
6919 (downcase, upcase1): New static inline functions.
6920 (DOWNCASE, UPCASE1): Reimplement using these functions.
6921 This avoids undefined behavior in expressions like
6922 DOWNCASE (x) == DOWNCASE (y), which previously suffered
6923 from race conditions in accessing the global variables
6924 case_temp1 and case_temp2.
6925 * casetab.c (case_temp1, case_temp2): Remove; no longer needed.
6926 * lisp.h (case_temp1, case_temp2): Remove their decls.
6927 * character.h (ASCII_CHAR_P): Move from here ...
6928 * lisp.h: ... to here, so that the inline functions mentioned
6929 above can use them.
6930
4a6bea26
PE
6931 * dired.c (directory_files_internal_unwind): Now static.
6932
f14b7e14
PE
6933 * fileio.c (file_name_as_directory, directory_file_name):
6934 (barf_or_query_if_file_exists, auto_save_error, auto_save_1):
6935 Now static.
2893f146
PE
6936 (file_name_as_directory): Use const pointers when appropriate.
6937 (Fexpand_file_name): Likewise. In particular, newdir might
6938 point at constant storage, so make it a const pointer.
fd4ead52 6939 (Fmake_directory_internal, Fread_file_name): Remove unused vars.
b14aac08
PE
6940 (Ffile_selinux_context, Fset_file_selinux_context): Fix pointer
6941 signedness issues.
f839df0c
PE
6942 (Fset_file_times, Finsert_file_contents, auto_save_error):
6943 Rename locals to avoid shadowing.
f14b7e14 6944
5716756e 6945 * minibuf.c (choose_minibuf_frame_1): Now static.
62137a95
PE
6946 (Ftry_completion, Fall_completions): Rename or remove locals
6947 to avoid shadowing.
5716756e 6948
b4c3046a
PE
6949 * marker.c (bytepos_to_charpos): Remove; unused.
6950
b45db522
PE
6951 * lisp.h (verify_bytepos, count_markers): New decls,
6952 so that gcc does not warn that these functions aren't declared.
6953
85876d07
PE
6954 * insdel.c (check_markers, make_gap_larger, make_gap_smaller):
6955 (reset_var_on_error, Fcombine_after_change_execute_1): Now static.
f0cb4a60 6956 (CHECK_MARKERS): Redo to avoid gcc -Wempty-body diagnostic.
40ef059e 6957 (copy_text): Remove unused local var.
85876d07 6958
03d78a21 6959 * filelock.c (within_one_second): Now static.
b3dd38ab 6960 (lock_file_1): Rename local to avoid shadowing.
03d78a21 6961
5df8f01b
PE
6962 * buffer.c (fix_overlays_before): Mark locals as initialized.
6963 (fix_start_end_in_overlays): Likewise. This function should be
6964 simplified by using pointers-to-pointers, but that's a different
6965 matter.
b1d876f1 6966 (switch_to_buffer_1): Now static.
8f54f30a
PE
6967 (Fkill_buffer, record_buffer, Fbury_buffer, Fset_buffer_multibyte):
6968 (report_overlay_modification): Rename locals to avoid shadowing.
c3bd59b5 6969
a70072c9 6970 * sysdep.c (system_process_attributes): Rename vars to avoid shadowing.
fbd02d7b 6971 Fix pointer signedness issue.
edced198
PE
6972 (sys_subshell): Mark local as volatile if checking for lint,
6973 to suppress a gcc -Wclobbered warning that does not seem to be right.
15dfd3d9 6974 (MAXPATHLEN): Define only if needed.
a70072c9 6975
a0977c44
PE
6976 * process.c (serial_open, serial_configure): Move decls from here ...
6977 * systty.h: ... to here, so that they can be checked.
6978
a884fdcc
PE
6979 * fns.c (get_random, seed_random): Move extern decls from here ...
6980 * lisp.h: ... to here, so that they can be checked.
6981
604efe86 6982 * sysdep.c (reset_io): Now static.
b8950c94 6983 (wait_for_termination_signal): Remove; unused.
604efe86 6984
38fc62d9
PE
6985 * keymap.c (keymap_parent, keymap_memberp, map_keymap_internal):
6986 (copy_keymap_item, append_key, push_text_char_description):
6987 Now static.
1004a21a 6988 (Fwhere_is_internal): Don't test CONSP (sequences) unnecessarily.
dbbb8427 6989 (DENSE_TABLE_SIZE): Remove; unused.
c1141155
PE
6990 (get_keymap, access_keymap, Fdefine_key, Fwhere_is_internal):
6991 (describe_map_tree):
6992 Rename locals to avoid shadowing.
38fc62d9 6993
2f2650da
PE
6994 * keyboard.c: Declare functions static if they are not used elsewhere.
6995 (echo_char, echo_dash, cmd_error, top_level_2):
6996 (poll_for_input, handle_async_input): Now static.
69a058fa
PE
6997 (read_char, kbd_buffer_get_event, make_lispy_position):
6998 (make_lispy_event, make_lispy_movement, apply_modifiers):
6999 (decode_keyboard_code, tty_read_avail_input, menu_bar_items):
7000 (parse_tool_bar_item, read_key_sequence, Fread_key_sequence):
7001 (Fread_key_sequence_vector): Rename locals to avoid shadowing.
c8a06054 7002 (read_key_sequence, read_char): Mark locals as initialized.
3ac94672 7003 (Fexit_recursive_edit, Fabort_recursive_edit): Mark with NO_RETURN.
2f2650da 7004
a053e86c 7005 * keyboard.h (make_ctrl_char): New decl.
da2f2dd9
PE
7006 (mark_kboards): Move decl here ...
7007 * alloc.c (mark_kboards): ... from here.
a053e86c 7008
4752793e
PE
7009 * lisp.h (force_auto_save_soon): New decl.
7010
74f10ca7 7011 * emacs.c (init_cmdargs): Rename local to avoid shadowing.
244fc23d
PE
7012 (DEFINE_DUMMY_FUNCTION): New macro.
7013 (__do_global_ctors, __do_global_ctors_aux, __do_global_dtors, __main):
7014 Use it.
c03cd23f
PE
7015 (main): Add casts to avoid warnings
7016 if GCC considers string literals to be constants.
74f10ca7 7017
022e70d4
PE
7018 * lisp.h (fatal_error_signal): Add decl, since it's exported.
7019
59d6fe83
PE
7020 * dbusbind.c: Pointer signedness fixes.
7021 (xd_signature, xd_append_arg, xd_initialize):
7022 (Fdbus_call_method, Fdbus_call_method_asynchronously):
7023 (Fdbus_method_return_internal, Fdbus_method_error_internal):
7024 (Fdbus_send_signal, xd_read_message_1, Fdbus_register_service):
7025 (Fdbus_register_signal): Use SSDATA when the context wants char *.
7026
78320123
PE
7027 * dbusbind.c (Fdbus_init_bus): Add cast to avoid warning
7028 if GCC considers string literals to be constants.
49cebcca 7029 (Fdbus_register_service, Fdbus_register_method): Remove unused vars.
78320123 7030
35ac2a97
SM
70312011-03-16 Stefan Monnier <monnier@iro.umontreal.ca>
7032
fb103ca9
SM
7033 * print.c (PRINT_CIRCLE_CANDIDATE_P): New macro.
7034 (print_preprocess, print_object): New macro to fix last change.
7035
35ac2a97
SM
7036 * print.c (print_preprocess): Don't forget font objects.
7037
62973b41
JB
70382011-03-16 Juanma Barranquero <lekktu@gmail.com>
7039
7040 * emacs.c (USAGE3): Doc fixes.
7041
0e48bb22
AS
70422011-03-15 Andreas Schwab <schwab@linux-m68k.org>
7043
7044 * coding.c (detect_coding_iso_2022): Reorganize code to clarify
7045 structure.
7046
7684e57b
JB
70472011-03-14 Juanma Barranquero <lekktu@gmail.com>
7048
7049 * lisp.h (VWindow_system, Qfile_name_history):
7050 * keyboard.h (lispy_function_keys) [WINDOWSNT]:
7051 * w32term.h (w32_system_caret_hwnd, w32_system_caret_height)
7052 (w32_system_caret_x, w32_system_caret_y): Declare extern.
7053
7054 * w32select.c: Don't #include "keyboard.h".
c96bbc66 7055 (run_protected): Add extern declaration for waiting_for_input.
7684e57b
JB
7056
7057 * w32.c (Qlocal, noninteractive1, inhibit_window_system):
7058 * w32console.c (detect_input_pending, read_input_pending)
7059 (encode_terminal_code):
7060 * w32fns.c (quit_char, lispy_function_keys, Qtooltip)
7061 (w32_system_caret_hwnd, w32_system_caret_height, w32_system_caret_x)
7062 (w32_system_caret_y, Qfile_name_history):
7063 * w32font.c (w32font_driver, QCantialias, QCotf, QClang):
7064 * w32inevt.c (reinvoke_input_signal, lispy_function_keys):
7065 * w32menu.c (Qmenu_bar, QCtoggle, QCradio, Qoverriding_local_map)
7066 (Qoverriding_terminal_local_map, Qmenu_bar_update_hook):
7067 * w32proc.c (Qlocal, report_file_error):
7068 * w32term.c (Vwindow_system, updating_frame):
7069 * w32uniscribe.c (initialized, uniscribe_font_driver):
7070 Remove unneeded extern declarations.
7071
2aa46d6c
CY
70722011-03-14 Chong Yidong <cyd@stupidchicken.com>
7073
c96bbc66 7074 * buffer.c (Fmake_indirect_buffer): Fix incorrect assertions.
2aa46d6c 7075
cffc6f3b
CY
70762011-03-13 Chong Yidong <cyd@stupidchicken.com>
7077
7078 * buffer.h (BUF_BEGV, BUF_BEGV_BYTE, BUF_ZV, BUF_ZV_BYTE, BUF_PT)
7079 (BUF_PT_BYTE): Rewrite to handle indirect buffers (Bug#8219).
7080 These macros can no longer be used for assignment.
7081
44f230aa
SM
7082 * buffer.c (Fget_buffer_create, Fmake_indirect_buffer):
7083 Assign struct members directly, instead of using BUF_BEGV etc.
cffc6f3b
CY
7084 (record_buffer_markers, fetch_buffer_markers): New functions for
7085 recording and fetching special buffer markers.
7086 (set_buffer_internal_1, set_buffer_temp): Use them.
7087
7088 * lread.c (unreadchar): Use SET_BUF_PT_BOTH.
7089
7090 * insdel.c (adjust_point): Use SET_BUF_PT_BOTH.
7091
7092 * intervals.c (temp_set_point_both): Use SET_BUF_PT_BOTH.
7093 (get_local_map): Use SET_BUF_BEGV_BOTH and SET_BUF_ZV_BOTH.
7094
7095 * xdisp.c (hscroll_window_tree):
7096 (reconsider_clip_changes): Use PT instead of BUF_PT.
7097
d251f04b
EZ
70982011-03-13 Eli Zaretskii <eliz@gnu.org>
7099
7100 * makefile.w32-in ($(BLD)/editfns.$(O)): Depend on
7101 $(EMACS_ROOT)/lib/intprops.h.
7102
f0c77cd1
PE
71032011-03-13 Paul Eggert <eggert@cs.ucla.edu>
7104
3eca4629
PE
7105 Fix more problems found by GCC 4.5.2's static checks.
7106
7c86ee98
PE
7107 * gtkutil.c (xg_get_pixbuf_from_pixmap): Add cast from char *
7108 to unsigned char * to avoid compiler diagnostic.
b0afc268
PE
7109 (xg_free_frame_widgets): Make it clear that a local variable is
7110 needed only if USE_GTK_TOOLTIP.
01e0b5ad
PE
7111 (gdk_window_get_screen): Make it clear that this macro is needed
7112 only if USE_GTK_TOOLTIP.
1e5524e7
PE
7113 (int_gtk_range_get_value): New function, which avoids a diagnostic
7114 from gcc -Wbad-function-cast.
7115 (xg_set_toolkit_scroll_bar_thumb): Use it.
7116 (xg_tool_bar_callback, xg_tool_item_stale_p): Rewrite to avoid
7117 diagnostic from gcc -Wbad-function-cast.
65dc836c
PE
7118 (get_utf8_string, xg_get_file_with_chooser):
7119 Rename locals to avoid shadowing.
7120 (create_dialog): Move locals to avoid shadowing.
7c86ee98 7121
41729b81
PE
7122 * xgselect.c (xg_select): Remove unused var.
7123
f0c77cd1
PE
7124 * image.c (four_corners_best): Mark locals as initialized.
7125 (gif_load): Initialize transparent_p to zero (Bug#8238).
7126 Mark another local as initialized.
ec6cf4c6 7127 (my_png_error, my_error_exit): Mark with NO_RETURN.
f0c77cd1 7128
ce0ad53d 7129 * image.c (clear_image_cache): Now static.
d5d5a617 7130 (DIM, HAVE_STDLIB_H_1): Remove unused macros.
e22cffbc 7131 (xpm_load): Redo to avoid "discards qualifiers" gcc warning.
77a765fd
PE
7132 (x_edge_detection): Remove unnecessary cast that
7133 gcc -Wbad-function-cast diagnoses.
2037898d 7134 (gif_load): Fix pointer signedness.
6ae141d6
PE
7135 (clear_image_cache, xbm_read_bitmap_data, x_detect_edges):
7136 (jpeg_load, gif_load): Rename locals to avoid shadowing.
ce0ad53d 7137
33383987 71382011-03-12 Paul Eggert <eggert@cs.ucla.edu>
3eca4629 7139
d32df629
PE
7140 Improve quality of tests for time stamp overflow.
7141 For example, without this patch (encode-time 0 0 0 1 1
7142 1152921504606846976) returns the obviously-bogus value (-948597
7143 62170) on my RHEL 5.5 x86-64 host. With the patch, it correctly
7144 reports time overflow. See
7145 <http://lists.gnu.org/archive/html/emacs-devel/2011-03/msg00470.html>.
b8d9bd41
PE
7146 * deps.mk (editfns.o): Depend on ../lib/intprops.h.
7147 * editfns.c: Include limits.h and intprops.h.
7148 (TIME_T_MIN, TIME_T_MAX): New macros.
7149 (time_overflow): Move earlier, to before first use.
7150 (hi_time, lo_time): New functions, for an accurate test for
7151 out-of-range times.
7152 (Fcurrent_time, Fget_internal_run_time, make_time): Use them.
7153 (Fget_internal_run_time): Don't assume time_t fits in int.
7154 (make_time): Use list2 instead of Fcons twice.
7155 (Fdecode_time): More accurate test for out-of-range times.
7156 (check_tm_member): New function.
7157 (Fencode_time): Use it, to test for out-of-range times.
d32df629
PE
7158 (lisp_time_argument): Don't rely on undefined left-shift and
7159 right-shift behavior when checking for time stamp overflow.
8be6f318 7160
fe31d94c
PE
7161 * editfns.c (time_overflow): New function, refactoring common code.
7162 (Fformat_time_string, Fdecode_time, Fencode_time):
7163 (Fcurrent_time_string): Use it.
7164
8be6f318
PE
7165 Move 'make_time' to be next to its inverse 'lisp_time_argument'.
7166 * dired.c (make_time): Move to ...
7167 * editfns.c (make_time): ... here.
7168 * systime.h: Note the move.
7169
09d9db2c 71702011-03-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
c47cbdfd 7171
126bc0dc
YM
7172 * fringe.c (update_window_fringes): Remove unused variables.
7173
c47cbdfd
YM
7174 * unexmacosx.c (copy_data_segment): Also copy __got section.
7175 (Bug#8223)
7176
7ac80be9
EZ
71772011-03-12 Eli Zaretskii <eliz@gnu.org>
7178
c96bbc66 7179 * termcap.c [MSDOS]: Include "msdos.h".
058e5dad
EZ
7180 (find_capability, tgetnum, tgetflag, tgetstr, tputs, tgetent):
7181 Constify `char *' arguments and their references according to
7182 prototypes in tparam.h.
7183
ecb0f94d 7184 * deps.mk (termcap.o): Depend on tparam.h and msdos.h.
058e5dad 7185
7ac80be9
EZ
7186 * msdos.c (XMenuAddPane): 3rd argument is `const char *' now.
7187 Adapt all references accordingly.
7188
7189 * msdos.h (XMenuAddPane): 3rd argument is `const char *' now.
7190
ef1fd07e
TT
71912011-03-11 Tom Tromey <tromey@redhat.com>
7192
7193 * buffer.c (syms_of_buffer): Remove obsolete comment.
7194
7ef4b50c
EZ
71952011-03-11 Eli Zaretskii <eliz@gnu.org>
7196
7197 * termhooks.h (encode_terminal_code): Declare prototype.
7198
7199 * msdos.c (encode_terminal_code): Don't declare prototype.
7200
7201 * term.c (encode_terminal_code): Now external again, used by
7202 w32console.c and msdos.c.
7203
44f230aa
SM
7204 * makefile.w32-in ($(BLD)/term.$(O), ($(BLD)/tparam.$(O)):
7205 Depend on $(SRC)/tparam.h, see 2011-03-11T07:24:21Z!eggert@cs.ucla.edu.
7ef4b50c 7206
4b1ec863 72072011-03-11 Paul Eggert <eggert@cs.ucla.edu>
f78faa98 7208
1714f52b 7209 Fix some minor problems found by GCC 4.5.2's static checks.
83316bf4 7210
4b1ec863
PE
7211 * fringe.c (update_window_fringes): Mark locals as initialized
7212 (Bug#8227).
7213 (destroy_fringe_bitmap, init_fringe_bitmap): Now static.
bf60f616 7214
524c7aa6
PE
7215 * alloc.c (mark_fringe_data): Move decl from here ...
7216 * lisp.h (mark_fringe_data) [HAVE_WINDOW_SYSTEM]: ... to here,
7217 to check its interface.
7218 (init_fringe_once): Do not declare unless HAVE_WINDOW_SYSTEM.
7219
a5c0af81 7220 * fontset.c (free_realized_fontset): Now static.
7519b8cd 7221 (Fset_fontset_font): Rename local to avoid shadowing.
cc6e5db1 7222 (fontset_font): Mark local as initialized.
a9a06e0b 7223 (FONTSET_SPEC, FONTSET_REPERTORY, RFONT_DEF_REPERTORY): Remove; unused.
a5c0af81 7224
b4716021
PE
7225 * xrdb.c: Include "xterm.h", to check x_load_resources's interface.
7226
811e9bac 7227 * xselect.c (x_disown_buffer_selections): Remove; not used.
7b83e2f1 7228 (TRACE3) [!defined TRACE_SELECTION]: Remove; not used.
aa0daa9f
PE
7229 (x_own_selection, Fx_disown_selection_internal): Rename locals
7230 to avoid shadowing.
7231 (x_handle_dnd_message): Remove local to avoid shadowing.
811e9bac 7232
7e3ab302
PE
7233 * lisp.h (GCPRO1_VAR, UNGCPRO_VAR): New macros,
7234 so that the caller can use some name other than gcpro1.
7235 (GCPRO1, UNGCPRO): Reimplement in terms of the new macros.
58d2d479
PE
7236 * xfns.c (Fx_create_frame, x_create_tip_frame, Fx_show_tip):
7237 (Fx_backspace_delete_keys_p):
7238 Use them to avoid shadowing, and rename vars to avoid shadowing.
7239 (x_decode_color, x_set_name, x_window): Now static.
6b437900 7240 (Fx_create_frame): Add braces to silence GCC warning.
c0951e53 7241 (Fx_file_dialog, Fx_select_font): Fix pointer signedness.
06b0c8a0
PE
7242 (x_real_positions, xg_set_icon_from_xpm_data, x_create_tip_frame):
7243 Remove unused locals.
7e3ab302
PE
7244 (Fx_create_frame, x_create_tip_frame, Fx_show_tip):
7245 (Fx_backspace_delete_keys_p): Rename locals to avoid shadowing.
7246 Some of these renamings use the new GCPRO1_VAR and UNGCPRO_VAR
7247 macros.
f78faa98 7248
e2b13473
PE
7249 * xterm.h (x_mouse_leave): New decl.
7250
77f23912
PE
7251 * xterm.c (x_copy_dpy_color, x_focus_on_frame, x_unfocus_frame):
7252 Remove unused functions.
cdf4ba58
PE
7253 (x_shift_glyphs_for_insert, XTflash, XTring_bell):
7254 (x_calc_absolute_position): Now static.
7411c686 7255 (XTread_socket): Don't define label "out" unless it's used.
2b07bcff 7256 Don't declare local "event" unless it's used.
ed7bf3a5
PE
7257 (x_iconify_frame, x_free_frame_resources): Don't declare locals
7258 unless they are used.
38d0b34a
PE
7259 (XEMBED_VERSION, xembed_set_info): Don't define unless needed.
7260 (x_fatal_error_signal): Remove; not used.
a6067996
PE
7261 (x_draw_image_foreground, redo_mouse_highlight, XTmouse_position):
7262 (x_scroll_bar_report_motion, handle_one_xevent, x_draw_bar_cursor):
7263 (x_error_catcher, x_connection_closed, x_error_handler):
7264 (x_error_quitter, xembed_send_message, x_iconify_frame):
7265 (my_log_handler): Rename locals to avoid shadowing.
28f1c698 7266 (x_delete_glyphs, x_ins_del_lines): Mark with NO_RETURN.
2a8fade0 7267 (x_connection_closed): Tell GCC not to suggest NO_RETURN.
77f23912 7268
44f230aa
SM
7269 * xfaces.c (clear_face_cache, Fx_list_fonts, Fface_font):
7270 Rename or move locals to avoid shadowing.
6b463e58 7271 (tty_defined_color, merge_face_heights): Now static.
5967d051 7272 (free_realized_faces_for_fontset): Remove; not used.
1e9966ea
PE
7273 (Fx_list_fonts): Mark variable that gcc -Wuninitialized
7274 does not deduce is never used uninitialized.
73719eba
PE
7275 (STRDUPA, LSTRDUPA, FONT_POINT_SIZE_QUANTUM): Remove; not used.
7276 (LFACEP): Define only if XASSERTS, as it's not needed otherwise.
071048a3 7277
426994c3 7278 * terminal.c (store_terminal_param): Now static.
5489860b 7279
032f1620 7280 * xmenu.c (menu_highlight_callback): Now static.
9d66f88e 7281 (set_frame_menubar): Remove unused local.
d4323972 7282 (xmenu_show): Rename parameter to avoid shadowing.
6d1f7fee
PE
7283 (xmenu_show, xdialog_show, xmenu_show): Make local pointers "const"
7284 since they might point to immutable storage.
281585b0
PE
7285 (next_menubar_widget_id): Declare only if USE_X_TOOLKIT,
7286 since it's unused otherwise.
032f1620 7287
367c19e5 7288 * xdisp.c (produce_glyphless_glyph): Initialize lower_xoff.
53df7c11 7289 Add a FIXME, since the code still doesn't look right. (Bug#8215)
9f36b9fd
PE
7290 (Fcurrent_bidi_paragraph_direction): Simplify slightly; this
7291 avoids a gcc -Wuninitialized diagnostic.
0e086e8f 7292 (display_line, BUILD_COMPOSITE_GLYPH_STRING, draw_glyphs):
44a3a108
PE
7293 (note_mouse_highlight): Mark variables that gcc -Wuninitialized
7294 does not deduce are never used uninitialized.
70739cbe 7295
07b48fa9
PE
7296 * lisp.h (IF_LINT): New macro, copied from ../lib-src/emacsclient.c.
7297
8868a238 7298 * xdisp.c (redisplay_window): Rename local to avoid shadowing.
4554d213
PE
7299 * window.c (window_loop, size_window):
7300 (run_window_configuration_change_hook, enlarge_window): Likewise.
8868a238 7301
7e5cf297 7302 * window.c (display_buffer): Now static.
d6550a9f
PE
7303 (size_window): Mark variables that gcc -Wuninitialized
7304 does not deduce are never used uninitialized.
a586633d
PE
7305 * window.h (check_all_windows): New decl, to forestall
7306 gcc -Wmissing-prototypes diagnostic.
5b555da1 7307 * dispextern.h (bidi_dump_cached_states): Likewise.
7e5cf297 7308
f6095868
PE
7309 * charset.h (CHECK_CHARSET_GET_CHARSET): Rename locals to avoid
7310 shadowing.
7311 * charset.c (map_charset_for_dump, Fchar_charset): Likewise.
726929c4
PE
7312 Include <limits.h>.
7313 (Fsort_charsets): Redo min/max calculation to shorten the code a bit
7314 and to avoid gcc -Wuninitialized warning.
89ef49df
PE
7315 (load_charset_map): Mark variables that gcc -Wuninitialized
7316 does not deduce are never used uninitialized.
53df7c11 7317 (load_charset): Abort instead of using uninitialized var (Bug#8229).
f6095868 7318
f38b440c
PE
7319 * coding.c (coding_set_source, coding_set_destination):
7320 Use "else { /* comment */ }" rather than "else /* comment */;"
7321 for clarity, and to avoid gcc -Wempty-body warning.
2735d060
PE
7322 (Fdefine_coding_system_internal): Don't redeclare 'i' inside
7323 a block, when the outer 'i' will do.
7324 (decode_coding_utf_8, decode_coding_utf_16, detect_coding_emacs_mule):
7325 (emacs_mule_char, decode_coding_emacs_mule, detect_coding_iso_2022):
7326 (decode_coding_iso_2022, decode_coding_sjis, decode_coding_big5):
7327 (decode_coding_raw_text, decode_coding_charset, get_translation_table):
7328 (Fdecode_sjis_char, Fdefine_coding_system_internal):
7329 Rename locals to avoid shadowing.
7330 * character.h (FETCH_STRING_CHAR_ADVANCE): Likewise.
e2f1bab9
PE
7331 * coding.c (emacs_mule_char, encode_invocation_designation):
7332 Now static, since they're not used elsewhere.
413bb2db 7333 (decode_coding_iso_2022): Add "default: abort ();" as a safety check.
c4a63b12 7334 (decode_coding_object, encode_coding_object, detect_coding_system):
ee05f961
PE
7335 (decode_coding_emacs_mule): Mark variables that gcc
7336 -Wuninitialized does not deduce are never used uninitialized.
160b01f6
PE
7337 (detect_coding_iso_2022): Initialize a local variable that might
7338 be used uninitialized. Leave a FIXME because it's not clear that
53df7c11 7339 this initialization is needed. (Bug#8211)
5f58e762
PE
7340 (ISO_CODE_LF, ISO_CODE_CR, CODING_ISO_FLAG_EUC_TW_SHIFT):
7341 (ONE_MORE_BYTE_NO_CHECK, UTF_BOM, UTF_16_INVALID_P):
7342 (SHIFT_OUT_OK, ENCODE_CONTROL_SEQUENCE_INTRODUCER):
7343 (ENCODE_DIRECTION_R2L, ENCODE_DIRECTION_L2R):
7344 Remove unused macros.
f38b440c 7345
232b38b9 7346 * category.c (hash_get_category_set): Remove unused local var.
9f3b5e69 7347 (copy_category_table): Now static, since it's not used elsewhere.
d0891610 7348 * character.c (string_count_byte8): Likewise.
232b38b9 7349
fb90da1b
PE
7350 * ccl.c (CCL_WRITE_STRING, CCL_ENCODE_CHAR, Fccl_execute_on_string):
7351 (Fregister_code_conversion_map): Rename locals to avoid shadowing.
7352
fb93dbc2
PE
7353 * chartab.c (copy_sub_char_table): Now static, since it's not used
7354 elsewhere.
5c156ace
PE
7355 (sub_char_table_ref_and_range, char_table_ref_and_range):
7356 Rename locals to avoid shadowing.
bbcd0949 7357 (ASET_RANGE, GET_SUB_CHAR_TABLE): Remove unused macros.
fb93dbc2 7358
7d3b3862 7359 * bidi.c (bidi_check_type): Now static, since it's not used elsewhere.
630d6892 7360 (BIDI_BOB): Remove unused macro.
7d3b3862 7361
6be7d3da
PE
7362 * cm.c (cmgoto): Mark variables that gcc -Wuninitialized does not
7363 deduce are never used uninitialized.
c2ed9c8b 7364 * term.c (encode_terminal_code): Likewise.
6be7d3da 7365
75f8807f 7366 * term.c (encode_terminal_code): Now static. Remove unused local.
72abad34 7367
50938595
PE
7368 * tparam.h: New file.
7369 * term.c, tparam.h: Include it.
7370 * deps.mk (term.o, tparam.o): Depend on tparam.h.
7371 * term.c (tputs, tgetent, tgetflag, tgetnum, tparam, tgetstr):
7372 Move these decls to tparam.h, and make them agree with what
7373 is actually in tparam.c. The previous trick of using incompatible
7374 decls in different modules does not conform to the C standard.
7375 All callers of tparam changed to use tparam's actual API.
7376 * tparam.c (tparam1, tparam, tgoto):
7377 Use const pointers where appropriate.
7378
fbceeba2
PE
7379 * cm.c (calccost, cmgoto): Use const pointers where appropriate.
7380 * cm.h (struct cm): Likewise.
7381 * dispextern.h (do_line_insertion_deletion_costs): Likewise.
7382 * scroll.c (ins_del_costs, do_line_insertion_deletion_costs): Likewise.
7383 * term.c (tty_ins_del_lines, calculate_costs, struct fkey_table):
7384 (term_get_fkeys_1, append_glyphless_glyph, produce_glyphless_glyph):
7385 (turn_on_face, init_tty): Likewise.
7386 * termchar.h (struct tty_display_info): Likewise.
fbceeba2 7387
7f3f1250
PE
7388 * term.c (term_mouse_position): Rename local to avoid shadowing.
7389
e6ca6543
PE
7390 * alloc.c (mark_ttys): Move decl from here ...
7391 * lisp.h (mark_ttys): ... to here, so that it's checked against defn.
7392
c40f8d15
AS
73932011-03-11 Andreas Schwab <schwab@linux-m68k.org>
7394
7395 * .gdbinit (pwinx, xbuffer): Fix access to buffer name.
7396
cfe0661d
JB
73972011-03-09 Juanma Barranquero <lekktu@gmail.com>
7398
7399 * search.c (compile_pattern_1): Remove argument regp, unused since
7400 revid:rms@gnu.org-19941211082627-3x1g1wyqkjmwloig.
7401 (compile_pattern): Don't pass it.
7402
0afb4571
J
74032011-03-08 Jan Djärv <jan.h.d@swipnet.se>
7404
7405 * xterm.h (DEFAULT_GDK_DISPLAY): New define.
7406 (GDK_WINDOW_XID, gtk_widget_get_preferred_size): New defines
7407 for ! HAVE_GTK3.
7408 (GTK_WIDGET_TO_X_WIN): Use GDK_WINDOW_XID.
7409
7410 * xmenu.c (menu_position_func): Call gtk_widget_get_preferred_size.
7411
7412 * gtkutil.c: Include gtkx.h if HAVE_GTK3. If ! HAVE_GTK3, define
7413 gdk_window_get_screen, gdk_window_get_geometry,
7414 gdk_x11_window_lookup_for_display and GDK_KEY_g.
7415 (xg_set_screen): Use DEFAULT_GDK_DISPLAY.
7416 (xg_get_pixbuf_from_pixmap): New function.
7417 (xg_get_pixbuf_from_pix_and_mask): Change parameters from GdkPixmap
7418 to Pixmap, take frame as parameter, remove GdkColormap parameter.
7419 Call xg_get_pixbuf_from_pixmap instead of
7420 gdk_pixbuf_get_from_drawable.
7421 (xg_get_image_for_pixmap): Do not make GdkPixmaps, call
7422 xg_get_pixbuf_from_pix_and_mask with Pixmap parameters instead.
7423 (xg_check_special_colors): Use GtkStyleContext and its functions
7424 for HAVE_GTK3.
7425 (xg_prepare_tooltip, xg_hide_tooltip): Call gdk_window_get_screen.
7426 (xg_prepare_tooltip, create_dialog, menubar_map_cb)
7427 (xg_update_frame_menubar, xg_tool_bar_detach_callback)
44f230aa
SM
7428 (xg_tool_bar_attach_callback, xg_update_tool_bar_sizes):
7429 Call gtk_widget_get_preferred_size.
0afb4571
J
7430 (xg_frame_resized): gdk_window_get_geometry only takes 5
7431 parameters.
44f230aa
SM
7432 (xg_win_to_widget, xg_event_is_for_menubar):
7433 Call gdk_x11_window_lookup_for_display.
0afb4571
J
7434 (xg_set_widget_bg): New function.
7435 (delete_cb): New function.
895009e1 7436 (xg_create_frame_widgets): Connect delete-event to delete_cb.
0afb4571
J
7437 Call xg_set_widget_bg. Only set backgrund pixmap for ! HAVE_GTK3
7438 (xg_set_background_color): Call xg_set_widget_bg.
7439 (xg_set_frame_icon): Call xg_get_pixbuf_from_pix_and_mask.
7440 (xg_create_scroll_bar): vadj is a GtkAdjustment for HAVE_GTK3.
7441 Only call gtk_range_set_update_policy if ! HAVE_GTK3.
7442 (xg_make_tool_item): Only connect xg_tool_bar_item_expose_callback
7443 if ! HAVE_GTK3.
7444 (update_frame_tool_bar): Call gtk_widget_hide.
7445 (xg_initialize): Use GDK_KEY_g.
7446
7447 * xsmfns.c (gdk_set_sm_client_id): Define to gdk_set_sm_client_id
7448 if ! HAVE_GTK3
7449 (x_session_initialize): Call gdk_x11_set_sm_client_id.
7450
7451 * xterm.c (XFillRectangle): Use cairo routines for HAVE_GTK3.
7452 (x_term_init): Disable Xinput(2) with GDK_CORE_DEVICE_EVENTS.
7453 Load ~/emacs.d/gtkrc only for ! HAVE_GTK3.
7454
1c2cc4ef
JB
74552011-03-08 Juanma Barranquero <lekktu@gmail.com>
7456
7457 * w32xfns.c (select_palette): Check success of RealizePalette against
7458 GDI_ERROR, not zero.
7459
33383987 7460See ChangeLog.11 for earlier changes.
aac0c6e3
MR
7461
7462;; Local Variables:
7463;; coding: utf-8
aac0c6e3
MR
7464;; End:
7465
33383987 7466 Copyright (C) 2011 Free Software Foundation, Inc.
aac0c6e3
MR
7467
7468 This file is part of GNU Emacs.
7469
7470 GNU Emacs is free software: you can redistribute it and/or modify
7471 it under the terms of the GNU General Public License as published by
7472 the Free Software Foundation, either version 3 of the License, or
7473 (at your option) any later version.
7474
7475 GNU Emacs is distributed in the hope that it will be useful,
7476 but WITHOUT ANY WARRANTY; without even the implied warranty of
7477 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7478 GNU General Public License for more details.
7479
7480 You should have received a copy of the GNU General Public License
7481 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.