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