* src/w32fns.c (w32_wnd_proc) [WM_TIMER, WM_SET_CURSOR]: Avoid using
[bpt/emacs.git] / src / ChangeLog
1 2011-07-08 Jason Rumney <jasonr@gnu.org>
2
3 * w32fns.c (w32_wnd_proc) [WM_TIMER, WM_SET_CURSOR]: Avoid using
4 frame struct members of non-existent frames (Bug#6284).
5
6 2011-07-08 Jan Djärv <jan.h.d@swipnet.se>
7
8 * nsterm.m (keyDown): Call to wantsToDelayTextChangeNotifications and
9 variable firstTime not needed on OSX >= 10.6.
10 (setPosition): setFloatValue:knobProportion: is deprecated on OSX
11 >= 10.5. Use setKnobProportion, setDoubleValue.
12
13 * nsterm.h (MAC_OS_X_VERSION_10_3, MAC_OS_X_VERSION_10_4)
14 (MAC_OS_X_VERSION_10_5): Define if not defined.
15 (EmacsView, EmacsTooltip): Implements NSWindowDelegate on OSX >= 10.6.
16 (EmacsMenu): Implements NSMenuDelegate on OSX >= 10.6.
17 (EmacsToolbar): Implements NSToolbarDelegate on OSX >= 10.6.
18
19 * nsselect.m (ns_string_from_pasteboard): Don't use deprecated methods
20 cString and lossyCString on OSX >= 10.4
21
22 * nsmenu.m (fillWithWidgetValue): Don't use depercated method
23 sizeToFit on OSX >= 10.2.
24
25 * nsimage.m (allocInitFromFile): Don't use deprecated method
26 bestRepresentationForDevice on OSX >= 10.6.
27
28 * nsfns.m (check_ns_display_info): Cast to long and use %ld in error
29 to avoid warning.
30
31 * emacs.c: Declare unexec_init_emacs_zone.
32
33 * nsgui.h: Fix compiler warning about gnulib redefining verify.
34
35 * nsselect.m (ns_get_local_selection): Change to extern (Bug#8842).
36
37 * nsmenu.m (ns_update_menubar): Remove useless setDelegate call
38 on svcsMenu (Bug#8842).
39
40 * nsfns.m (Fx_open_connection): Remove NSStringPboardType from
41 ns_return_types.
42 (Fns_list_services): Just return Qnil on 10.6, code not working there.
43
44 * nsterm.m (QUTF8_STRING): Declare.
45 (initFrameFromEmacs): Call registerServicesMenuSendTypes.
46 (validRequestorForSendType): Return type is (id).
47 Change indexOfObjectIdenticalTo to indexOfObject.
48 Check if we have local selection before returning self (Bug#8842).
49 (writeSelectionToPasteboard): Put local selection into paste board
50 if we have a local selection (Bug#8842).
51 (syms_of_nsterm): DEFSYM QUTF8_STRING.
52
53 * nsterm.h (MAC_OS_X_VERSION_10_6): Define here instead of nsterm.m.
54 (ns_get_local_selection): Declare.
55
56 2011-07-07 Lars Magne Ingebrigtsen <larsi@gnus.org>
57
58 * keymap.c (describe_map_tree): Don't insert a double newline at
59 the end of the buffer (bug#1169) and return whether we inserted
60 something.
61
62 * callint.c (Fcall_interactively): Change "reading args" to
63 "providing args" to try to clarify what it does (bug#1010).
64
65 2011-07-07 Kenichi Handa <handa@m17n.org>
66
67 * composite.c (composition_compute_stop_pos): Ignore a static
68 composition starting before CHARPOS (Bug#8915).
69
70 * xdisp.c (handle_composition_prop): Likewise.
71
72 2011-07-07 Eli Zaretskii <eliz@gnu.org>
73
74 * term.c (produce_glyphs) <xassert>: Allow IT_GLYPHLESS in it->what.
75 (Bug#9015)
76
77 2011-07-07 Kenichi Handa <handa@m17n.org>
78
79 * character.h (unicode_category_t): New enum type.
80
81 * chartab.c (uniprop_decoder_t, uniprop_encoder_t): New types.
82 (Qchar_code_property_table): New variable.
83 (UNIPROP_TABLE_P, UNIPROP_GET_DECODER)
84 (UNIPROP_COMPRESSED_FORM_P): New macros.
85 (char_table_ascii): Uncompress the compressed values.
86 (sub_char_table_ref): New arg is_uniprop. Callers changed.
87 Uncompress the compressed values.
88 (sub_char_table_ref_and_range): Likewise.
89 (char_table_ref_and_range): Uncompress the compressed values.
90 (sub_char_table_set): New arg is_uniprop. Callers changed.
91 Uncompress the compressed values.
92 (sub_char_table_set_range): Args changed. Callers changed.
93 (char_table_set_range): Adjuted for the above change.
94 (map_sub_char_table): Delete args default_val and parent. Add arg
95 top. Give decoded values to a Lisp function.
96 (map_char_table): Adjusted for the above change. Give decoded
97 values to a Lisp function. Gcpro more variables.
98 (uniprop_table_uncompress)
99 (uniprop_decode_value_run_length): New functions.
100 (uniprop_decoder, uniprop_decoder_count): New variables.
101 (uniprop_get_decoder, uniprop_encode_value_character)
102 (uniprop_encode_value_run_length, uniprop_encode_value_numeric):
103 New functions.
104 (uniprop_encoder, uniprop_encoder_count): New variables.
105 (uniprop_get_encoder, uniprop_table)
106 (Funicode_property_table_internal, Fget_unicode_property_internal)
107 (Fput_unicode_property_internal): New functions.
108 (syms_of_chartab): DEFSYM Qchar_code_property_table, defsubr
109 Sunicode_property_table_internal, Sget_unicode_property_internal,
110 and Sput_unicode_property_internal. Defvar_lisp
111 char-code-property-alist.
112
113 * composite.c (CHAR_COMPOSABLE_P): Adjusted for the change of
114 Vunicode_category_table.
115
116 * font.c (font_range): Adjusted for the change of
117 Vunicode_category_table.
118
119 2011-07-07 Dan Nicolaescu <dann@ics.uci.edu>
120
121 * m/iris4d.h: Remove file, move contents ...
122 * s/irix6-5.h: ... here.
123
124 2011-07-06 Paul Eggert <eggert@cs.ucla.edu>
125
126 Remove unportable assumption about struct layout (Bug#8884).
127 * alloc.c (mark_buffer):
128 * buffer.c (reset_buffer_local_variables, Fbuffer_local_variables)
129 (clone_per_buffer_values): Don't assume that
130 sizeof (struct buffer) is a multiple of sizeof (Lisp_Object).
131 This isn't true in general, and it's particularly not true
132 if Emacs is configured with --with-wide-int.
133 * buffer.h (FIRST_FIELD_PER_BUFFER, LAST_FIELD_PER_BUFFER):
134 New macros, used in the buffer.c change.
135
136 2011-07-05 Jan Djärv <jan.h.d@swipnet.se>
137
138 * xsettings.c: Use both GConf and GSettings if both are available.
139 (store_config_changed_event): Add comment.
140 (dpyinfo_valid, store_font_name_changed, map_tool_bar_style)
141 (store_tool_bar_style_changed): New functions.
142 (store_monospaced_changed): Add comment. Call dpyinfo_valid.
143 (struct xsettings): Move font inside HAVE_XFT.
144 (GSETTINGS_TOOL_BAR_STYLE, GSETTINGS_FONT_NAME): New defines.
145 (GSETTINGS_MONO_FONT): Renamed from SYSTEM_MONO_FONT.
146 Move inside HAVE_XFT.
147 (something_changed_gsettingsCB): Renamed from something_changedCB.
148 Check for changes in GSETTINGS_TOOL_BAR_STYLE and GSETTINGS_FONT_NAME
149 also.
150 (GCONF_TOOL_BAR_STYLE, GCONF_FONT_NAME): New defines.
151 (GCONF_MONO_FONT): Renamed from SYSTEM_MONO_FONT. Move inside HAVE_XFT.
152 (something_changed_gconfCB): Renamed from something_changedCB.
153 Check for changes in GCONF_TOOL_BAR_STYLE and GCONF_FONT_NAME also.
154 (parse_settings): Move check for font inside HAVE_XFT.
155 (read_settings, apply_xft_settings): Add comment.
156 (read_and_apply_settings): Add comment. Call map_tool_bar_style and
157 store_tool_bar_style_changed. Move check for font inside HAVE_XFT and
158 call store_font_name_changed.
159 (xft_settings_event): Add comment.
160 (init_gsettings): Add comment. Get values for GSETTINGS_TOOL_BAR_STYLE
161 and GSETTINGS_FONT_NAME. Move check for fonts within HAVE_XFT.
162 (init_gconf): Add comment. Get values for GCONF_TOOL_BAR_STYLE
163 and GCONF_FONT_NAME. Move check for fonts within HAVE_XFT.
164 (xsettings_initialize): Call init_gsettings last.
165 (xsettings_get_system_font, xsettings_get_system_normal_font): Add
166 comment.
167
168 2011-07-05 Paul Eggert <eggert@cs.ucla.edu>
169
170 Random fixes. E.g., (random) never returned negative values.
171 * fns.c (Frandom): Use GET_EMACS_TIME for random seed, and add the
172 subseconds part to the entropy, as that's a bit more random.
173 Prefer signed to unsigned, since the signedness doesn't matter and
174 in general we prefer signed. When given a limit, use a
175 denominator equal to INTMASK + 1, not to VALMASK + 1, because the
176 latter isn't right if USE_2_TAGS_FOR_INTS.
177 * sysdep.c (get_random): Return a value in the range 0..INTMASK,
178 not 0..VALMASK. Don't discard "excess" bits that random () returns.
179
180 2011-07-04 Stefan Monnier <monnier@iro.umontreal.ca>
181
182 * textprop.c (text_property_stickiness):
183 Obey Vtext_property_default_nonsticky.
184 (syms_of_textprop): Add `display' to Vtext_property_default_nonsticky.
185 * w32fns.c (syms_of_w32fns):
186 * xfns.c (syms_of_xfns): Don't Add `display' since it's there by default.
187
188 2011-07-04 Paul Eggert <eggert@cs.ucla.edu>
189
190 * fileio.c (barf_or_query_if_file_exists): Use S_ISDIR.
191 This is more efficient than Ffile_directory_p and avoids a minor race.
192
193 2011-07-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
194
195 * buffer.c (Foverlay_put): Say what the return value is
196 (bug#7835).
197
198 * fileio.c (barf_or_query_if_file_exists): Check first if the file
199 is a directory before asking whether to use the file name
200 (bug#7564).
201 (barf_or_query_if_file_exists): Make the "File is a directory"
202 error be more correct.
203
204 * fns.c (Frequire): Remove the mention of the .gz files, since
205 that's installation-specific, but keep the mention of
206 `get-load-suffixes'.
207
208 2011-07-04 Paul Eggert <eggert@cs.ucla.edu>
209
210 * editfns.c (Fformat_time_string): Don't assume strlen fits in int.
211 Report string overflow if the output is too long.
212
213 2011-07-04 Juanma Barranquero <lekktu@gmail.com>
214
215 * gnutls.c (Fgnutls_boot): Don't mention :verify-error.
216 (syms_of_gnutls): Remove duplicate DEFSYM for
217 Qgnutls_bootprop_verify_hostname_error, an error for
218 Qgnutls_bootprop_verify_error (which is no longer used).
219
220 * eval.c (find_handler_clause): Remove parameters `sig' and `data',
221 unused since 2011-01-26T20:02:07Z!monnier@iro.umontreal.ca. All callers changed.
222 Also (re)move comments that are misplaced or no longer relevant.
223
224 2011-07-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
225
226 * callint.c (Finteractive): Clarify the meaning of "@" (bug#8813).
227
228 2011-07-03 Chong Yidong <cyd@stupidchicken.com>
229
230 * xfaces.c (Finternal_merge_in_global_face): Modify the foreground
231 and background color parameters if they have been changed.
232
233 2011-07-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
234
235 * editfns.c (Fformat): Clarify the - and 0 flags (bug#6659).
236
237 2011-07-03 Paul Eggert <eggert@cs.ucla.edu>
238
239 * xsettings.c (SYSTEM_FONT): Define only when used.
240 No need to define when HAVE_GSETTINGS || !HAVE_XFT.
241
242 * keymap.c (access_keymap_1): Now static.
243
244 2011-07-02 Chong Yidong <cyd@stupidchicken.com>
245
246 * keyboard.c (command_loop_1): If a down-mouse event is unbound,
247 leave any prefix arg for the up event (Bug#1586).
248
249 2011-07-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
250
251 * lread.c (syms_of_lread): Mention single symbols defined by
252 `defvar' or `defconst' (bug#7154).
253
254 * fns.c (Frequire): Mention .el.gz files (bug#7314).
255 (Frequire): Mention get-load-suffixes.
256
257 2011-07-02 Martin Rudalics <rudalics@gmx.at>
258
259 * window.h (window): Remove clone_number slot.
260 * window.c (Fwindow_clone_number, Fset_window_clone_number):
261 Remove.
262 (make_parent_window, make_window, saved_window)
263 (Fset_window_configuration, save_window_save): Don't deal with
264 clone numbers.
265 * buffer.c (Qclone_number): Remove declaration.
266 (sort_overlays, overlay_strings): Don't deal with clone numbers.
267
268 2011-07-02 Stefan Monnier <monnier@iro.umontreal.ca>
269
270 Add multiple inheritance to keymaps.
271 * keymap.c (Fmake_composed_keymap): New function.
272 (Fset_keymap_parent): Simplify.
273 (fix_submap_inheritance): Remove.
274 (access_keymap_1): New function extracted from access_keymap to handle
275 embedded parents and handle lists of maps.
276 (access_keymap): Use it.
277 (Fkeymap_prompt, map_keymap_internal, map_keymap, store_in_keymap)
278 (Fcopy_keymap): Handle embedded parents.
279 (Fcommand_remapping, define_as_prefix): Simplify.
280 (Fkey_binding): Simplify.
281 (syms_of_keymap): Move minibuffer-local-completion-map,
282 minibuffer-local-filename-completion-map,
283 minibuffer-local-must-match-map, and
284 minibuffer-local-filename-must-match-map to Elisp.
285 (syms_of_keymap): Defsubr make-composed-keymap.
286 * keyboard.c (menu_bar_items): Use map_keymap_canonical.
287 (parse_menu_item): Trivial simplification.
288
289 2011-07-01 Glenn Morris <rgm@gnu.org>
290
291 * Makefile.in (SETTINGS_LIBS): Fix typo.
292
293 2011-07-01 Kazuhiro Ito <kzhr@d1.dion.ne.jp> (tiny patch)
294
295 * coding.c (Fencode_coding_string): Record the last coding system
296 used, as the function doc string says (bug#8738).
297
298 2011-07-01 Jan Djärv <jan.h.d@swipnet.se>
299
300 * xsettings.c (store_monospaced_changed): Take new font as arg and
301 check for change against current_mono_font.
302 (EMACS_TYPE_SETTINGS): Remove this and related defines.
303 (emacs_settings_constructor, emacs_settings_get_property)
304 (emacs_settings_set_property, emacs_settings_class_init)
305 (emacs_settings_init, gsettings_obj): Remove.
306 (something_changedCB): New function for HAVE_GSETTINGS.
307 (something_changedCB): HAVE_GCONF: Call store_monospaced_changed
308 with value as argument.
309 (init_gsettings): Check that GSETTINGS_SCHEMA exists before calling
310 g_settings_new (Bug#8967). Do not create gsettings_obj.
311 Remove calls to g_settings_bind. Connect something_changedCB to
312 "changed".
313
314 * xgselect.c: Add defined (HAVE_GSETTINGS).
315 (xgselect_initialize): Ditto.
316
317 * process.c: Add defined (HAVE_GSETTINGS) for xgselect.h
318 (wait_reading_process_output): Add defined (HAVE_GSETTINGS) for
319 xg_select.
320
321 2011-07-01 Paul Eggert <eggert@cs.ucla.edu>
322
323 * eval.c (struct backtrace): Simplify and port the data structure.
324 Do not assume that "int nargs : BITS_PER_INT - 2;" produces a
325 signed bit field, as this assumption is not portable and it makes
326 Emacs crash when compiled with Sun C 5.8 on sparc. Do not use
327 "char debug_on_exit : 1" as this is not portable either; instead,
328 use the portable "unsigned int debug_on_exit : 1". Remove unused
329 member evalargs. Remove obsolete comments about cc bombing out.
330
331 2011-06-30 Jan Djärv <jan.h.d@swipnet.se>
332
333 * xsettings.c: Include glib-object.h, gio/gio.h if HAVE_GSETTINGS.
334 Let HAVE_GSETTINGS override HAVE_GCONF.
335 (store_monospaced_changed): New function.
336 (EMACS_SETTINGS): A new type derived from GObject to handle
337 GSettings notifications.
338 (emacs_settings_constructor, emacs_settings_get_property)
339 (emacs_settings_set_property, emacs_settings_class_init):
340 New functions.
341 (gsettings_client, gsettings_obj): New variables.
342 (GSETTINGS_SCHEMA): New define.
343 (something_changedCB): Call store_monospaced_changed.
344 (init_gsettings): New function.
345 (xsettings_initialize): Call init_gsettings.
346 (syms_of_xsettings): Initialize gsettings_client, gsettings_obj
347 to NULL.
348
349 * Makefile.in (SETTINGS_CFLAGS, SETTINGS_LIBS): Renamed from
350 GCONF_CFLAGS/LIBS.
351
352 2011-06-29 Martin Rudalics <rudalics@gmx.at>
353
354 * window.c (resize_root_window, grow_mini_window)
355 (shrink_mini_window): Rename Qresize_root_window to
356 Qwindow_resize_root_window and Qresize_root_window_vertically to
357 Qwindow_resize_root_window_vertically.
358
359 2011-06-28 Paul Eggert <eggert@cs.ucla.edu>
360
361 * gnutls.c (Qgnutls_bootprop_verify_error): Remove unused var.
362
363 2011-06-27 Juanma Barranquero <lekktu@gmail.com>
364
365 * makefile.w32-in: Redesign dependencies so they reflect more
366 clearly which files are directly included by each source file,
367 and not through other includes.
368
369 2011-06-27 Martin Rudalics <rudalics@gmx.at>
370
371 * buffer.c (Qclone_number): Declare static and DEFSYM it.
372 (sort_overlays, overlay_strings): When an overlay's clone number
373 matches the window's clone number process the overlay even if
374 the overlay's window property doesn't match the current window.
375
376 * window.c (Fwindow_vchild): Rename to Fwindow_top_child.
377 (Fwindow_hchild): Rename to Fwindow_left_child.
378 (Fwindow_next): Rename to Fwindow_next_sibling.
379 (Fwindow_prev): Rename to Fwindow_prev_sibling.
380 (resize_window_check): Rename to window_resize_check.
381 (resize_window_apply): Rename to window_resize_apply.
382 (Fresize_window_apply): Rename to Fwindow_resize_apply.
383 (Fdelete_other_windows_internal, resize_frame_windows)
384 (Fsplit_window_internal, Fdelete_window_internal)
385 (grow_mini_window, shrink_mini_window)
386 (Fresize_mini_window_internal): Fix callers accordingly.
387
388 2011-06-26 Jan Djärv <jan.h.d@swipnet.se>
389
390 * emacsgtkfixed.h: State that this is only used with Gtk+3.
391 (emacs_fixed_set_min_size): Remove.
392 (emacs_fixed_new): Take frame as argument.
393
394 * emacsgtkfixed.c: State that this is only used with Gtk+3.
395 (_EmacsFixedPrivate): Remove minwidth/height.
396 Add struct frame *f.
397 (emacs_fixed_init): Initialize priv->f.
398 (get_parent_class, emacs_fixed_set_min_size): Remove.
399 (emacs_fixed_new): Set priv->f to argument.
400 (emacs_fixed_get_preferred_width)
401 (emacs_fixed_get_preferred_height): Use min_width/height from
402 frames size_hint to set minimum and natural (Bug#8919).
403 (XSetWMSizeHints, XSetWMNormalHints): Override these functions
404 and use min_width/height from frames size_hint to set
405 min_width/height (Bug#8919).
406
407 * gtkutil.c (xg_create_frame_widgets): Pass f to emacs_fixed_new.
408 (x_wm_set_size_hint): Remove call to emacs_fixed_set_min_size.
409 Fix indentation.
410
411 2011-06-26 Eli Zaretskii <eliz@gnu.org>
412
413 * bidi.c (bidi_paragraph_init): Test for ZV_BYTE before calling
414 bidi_at_paragraph_end, since fast_looking_at doesn't like to be
415 called at ZV.
416
417 2011-06-26 Chong Yidong <cyd@stupidchicken.com>
418
419 * process.c (wait_reading_process_output): Bypass select if
420 waiting for a cell while ignoring keyboard input, and input is
421 pending. Suggested by Jan Djärv (Bug#8869).
422
423 2011-06-25 Paul Eggert <eggert@cs.ucla.edu>
424
425 Use gnulib's dup2 module instead of rolling our own.
426 * sysdep.c (dup2) [!HAVE_DUP2]: Remove; gnulib now does this.
427
428 2011-06-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
429
430 * dispnew.c (scrolling_window): Before scrolling, turn off a
431 mouse-highlight in the window being scrolled.
432
433 2011-06-24 Juanma Barranquero <lekktu@gmail.com>
434
435 Move DEFSYM to lisp.h and use everywhere.
436
437 * character.h (DEFSYM): Move declaration...
438 * lisp.h (DEFSYM): ...here.
439
440 * gnutls.c:
441 * minibuf.c:
442 * w32menu.c:
443 * w32proc.c:
444 * w32select.c: Don't include character.h.
445
446 * alloc.c (syms_of_alloc):
447 * buffer.c (syms_of_buffer):
448 * bytecode.c (syms_of_bytecode):
449 * callint.c (syms_of_callint):
450 * casefiddle.c (syms_of_casefiddle):
451 * casetab.c (init_casetab_once):
452 * category.c (init_category_once, syms_of_category):
453 * ccl.c (syms_of_ccl):
454 * cmds.c (syms_of_cmds):
455 * composite.c (syms_of_composite):
456 * dbusbind.c (syms_of_dbusbind):
457 * dired.c (syms_of_dired):
458 * dispnew.c (syms_of_display):
459 * doc.c (syms_of_doc):
460 * editfns.c (syms_of_editfns):
461 * emacs.c (syms_of_emacs):
462 * eval.c (syms_of_eval):
463 * fileio.c (syms_of_fileio):
464 * fns.c (syms_of_fns):
465 * frame.c (syms_of_frame):
466 * fringe.c (syms_of_fringe):
467 * insdel.c (syms_of_insdel):
468 * keymap.c (syms_of_keymap):
469 * lread.c (init_obarray, syms_of_lread):
470 * macros.c (syms_of_macros):
471 * msdos.c (syms_of_msdos):
472 * print.c (syms_of_print):
473 * process.c (syms_of_process):
474 * search.c (syms_of_search):
475 * sound.c (syms_of_sound):
476 * syntax.c (init_syntax_once, syms_of_syntax):
477 * terminal.c (syms_of_terminal):
478 * textprop.c (syms_of_textprop):
479 * undo.c (syms_of_undo):
480 * w32.c (globals_of_w32):
481 * window.c (syms_of_window):
482 * xdisp.c (syms_of_xdisp):
483 * xfaces.c (syms_of_xfaces):
484 * xfns.c (syms_of_xfns):
485 * xmenu.c (syms_of_xmenu):
486 * xsettings.c (syms_of_xsettings):
487 * xterm.c (syms_of_xterm): Use DEFSYM.
488
489 2011-06-24 Teodor Zlatanov <tzz@lifelogs.com>
490
491 * gnutls.c (syms_of_gnutls): Use the DEFSYM macro from character.h.
492
493 2011-06-23 Paul Eggert <eggert@cs.ucla.edu>
494
495 Integer and buffer overflow fixes (Bug#8873).
496
497 * print.c (printchar, strout): Check for string overflow.
498 (PRINTPREPARE, printchar, strout):
499 Don't set size unless allocation succeeds.
500
501 * minibuf.c (read_minibuf_noninteractive): Use ptrdiff_t, not int,
502 for sizes. Check for string overflow more accurately.
503 Simplify newline removal at end; this suppresses a GCC 4.6.0 warning.
504
505 * macros.c: Integer and buffer overflow fixes.
506 * keyboard.h (struct keyboard.kbd_macro_bufsize):
507 * macros.c (Fstart_kbd_macro, store_kbd_macro_char):
508 Use ptrdiff_t, not int, for sizes.
509 Don't increment bufsize until after realloc succeeds.
510 Check for size-calculation overflow.
511 (Fstart_kbd_macro): Use EMACS_INT, not int, for XINT result.
512
513 * lisp.h (DEFVAR_KBOARD): Use offsetof instead of char * finagling.
514
515 * lread.c: Integer overflow fixes.
516 (read_integer): Radix is now EMACS_INT, not int,
517 to improve quality of diagnostics for out-of-range radices.
518 Calculate buffer size correctly for out-of-range radices.
519 (read1): Check for integer overflow in radices, and in
520 read-circle numbers.
521 (read_escape): Avoid int overflow.
522 (Fload, openp, read_buffer_size, read1)
523 (substitute_object_recurse, read_vector, read_list, map_obarray):
524 Use ptrdiff_t, not int, for sizes.
525 (read1): Use EMACS_INT, not int, for sizes.
526 Check for size overflow.
527
528 * image.c (cache_image): Check for size arithmetic overflow.
529
530 * lread.c: Integer overflow issues.
531 (saved_doc_string_size, saved_doc_string_length)
532 (prev_saved_doc_string_size, prev_saved_doc_string_length):
533 Now ptrdiff_t, not int.
534 (read1): Don't assume doc string length fits in int. Check for
535 out-of-range doc string lengths.
536 (read_list): Don't assume file position fits in int.
537 (read_escape): Check for hex character overflow.
538
539 2011-06-22 Leo Liu <sdl.web@gmail.com>
540
541 * minibuf.c (Fcompleting_read_default, Vcompleting_read_function):
542 Move to minibuffer.el.
543
544 2011-06-22 Paul Eggert <eggert@cs.ucla.edu>
545
546 Fixes for GLYPH_DEBUG found by GCC 4.6.0 static checking.
547 The following patches are for when GLYPH_DEBUG && !XASSERT.
548 * dispextern.h (trace_redisplay_p, dump_glyph_string):
549 * dispnew.c (flush_stdout):
550 * xdisp.c (dump_glyph_row, dump_glyph_matrix, dump_glyph):
551 Mark as externally visible.
552 * dispnew.c (check_window_matrix_pointers): Now static.
553 * dispnew.c (window_to_frame_vpos):
554 * xfns.c (unwind_create_frame):
555 * xterm.c (x_check_font): Remove unused local.
556 * scroll.c (CHECK_BOUNDS):
557 * xfaces.c (cache_fache): Rename local to avoid shadowing.
558 * xfns.c, w32fns.c (image_cache_refcount, dpyinfo_refcount): Now static.
559 * xdisp.c (check_window_end): Now a no-op if !XASSERTS.
560 (debug_first_unchanged_at_end_vpos, debug_last_unchanged_at_beg_vpos)
561 (debug_dvpos, debug_dy, debug_delta, debug_delta_bytes, debug_end_vpos):
562 Now static.
563 (debug_method_add): Use va_list and vsprintf rather than relying
564 on undefined behavior with wrong number of arguments.
565 (dump_glyph, dump_glyph_row, Fdump_glyph_matrix):
566 Don't assume ptrdiff_t and EMACS_INT are the same width as int.
567 In this code, it's OK to assume C99 behavior for ptrdiff_t formats
568 since we're not interested in debugging glyphs with old libraries.
569 * xfaces.c (cache_face): Move debugging code earlier; this pacifies
570 GCC 4.6.0's static checking.
571
572 2011-06-22 Paul Eggert <eggert@cs.ucla.edu>
573
574 Integer overflow and signedness fixes (Bug#8873).
575 A few related buffer overrun fixes, too.
576
577 * font.c (font_score): Use EMACS_INT, not int, to store XINT value.
578
579 * dispextern.h (struct face.stipple):
580 * image.c (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
581 (x_bitmap_mask, x_allocate_bitmap_record)
582 (x_create_bitmap_from_data, x_create_bitmap_from_file)
583 (x_destroy_bitmap, x_destroy_all_bitmaps, x_create_bitmap_mask)
584 (x_create_bitmap_from_xpm_data):
585 * nsterm.h (struct ns_display_info.bitmaps_size, .bitmaps_last):
586 * w32term.h (struct w32_display_info.icon_bitmap_id, .bitmaps_size)
587 (.bitmaps_last):
588 * xfaces.c (load_pixmap):
589 * xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap):
590 * xterm.h (struct x_display_info.icon_bitmap_id, .bitmaps_size)
591 (.bitmaps_last, struct x_output.icon_bitmap):
592 Use ptrdiff_t, not int, for bitmap indexes.
593 (x_allocate_bitmap_record): Check for size overflow.
594 * dispextern.h, lisp.h: Adjust to API changes elsewhere.
595
596 Use ptrdiff_t, not int, for overlay counts.
597 * buffer.h (overlays_at, sort_overlays, GET_OVERLAYS_AT):
598 * editfns.c (overlays_around, get_pos_property):
599 * textprop.c (get_char_property_and_overlay):
600 * xdisp.c (next_overlay_change, note_mouse_highlight):
601 * xfaces.c (face_at_buffer_position):
602 * buffer.c (OVERLAY_COUNT_MAX): New macro.
603 (overlays_at, overlays_in, sort_overlays, Foverlays_at)
604 (Fnext_overlay_change, Fprevious_overlay_change)
605 (mouse_face_overlay_overlaps, Foverlays_in):
606 Use ptrdiff_t, not int, for sizes.
607 (overlays_at, overlays_in): Check for size-calculation overflow.
608
609 * xterm.c (xim_initialize, same_x_server): Strlen may not fit in int.
610
611 * xsmfns.c (smc_save_yourself_CB, x_session_initialize): Avoid strlen.
612 (x_session_initialize): Do not assume string length fits in int.
613
614 * xsettings.c (apply_xft_settings): Fix potential buffer overrun.
615 This is unlikely, but can occur if DPI is outlandish.
616
617 * xsettings.c (Ffont_get_system_normal_font, Ffont_get_system_font):
618 * xselect.c (Fx_get_atom_name): Avoid need for strlen.
619
620 * xrdb.c: Don't assume strlen fits in int; avoid some strlens.
621 * xrdb.c (magic_file_p, search_magic_path):
622 Omit last arg SUFFIX; it was always 0. All callers changed.
623 (magic_file_p): Use ptrdiff_t, not int. Check for size overflow.
624
625 * xfont.c (xfont_match): Avoid need for strlen.
626
627 * xfns.c: Don't assume strlen fits in int.
628 (xic_create_fontsetname, x_window): Use ptrdiff_t, not int.
629
630 * xdisp.c (message_log_check_duplicate): Return intmax_t,
631 not unsigned long, as we prefer signed integers. All callers changed.
632 Detect integer overflow in repeat count.
633 (message_dolog): Don't assume print length fits in 39 bytes.
634 (display_mode_element): Don't assume strlen fits in int.
635
636 * termcap.c: Don't assume sizes fit in int and never overflow.
637 (struct termcap_buffer, tgetent): Use ptrdiff_t, not int, for sizes.
638 (gobble_line): Check for size-calculation overflow.
639
640 * minibuf.c (Fread_buffer):
641 * lread.c (intern, intern_c_string):
642 * image.c (xpm_scan) [HAVE_NS && !HAVE_XPM]:
643 Don't assume string length fits in int.
644
645 * keyboard.c (parse_tool_bar_item):
646 * gtkutil.c (style_changed_cb): Avoid need for strlen.
647
648 * font.c: Don't assume string length fits in int.
649 (font_parse_xlfd, font_parse_fcname, font_unparse_fcname):
650 Use ptrdiff_t, not int.
651 (font_intern_prop): Don't assume string length fits in int.
652 Don't assume integer property fits in fixnum.
653 * font.h (font_intern_prop): 2nd arg is now ptrdiff_t, not int.
654
655 * filelock.c: Fix some buffer overrun and integer overflow issues.
656 (get_boot_time): Don't assume gzip command string fits in 100 bytes.
657 Reformulate so as not to need the command string.
658 Invoke gzip -cd rather than gunzip, as it's more portable.
659 (lock_info_type, lock_file_1, lock_file):
660 Don't assume pid_t and time_t fit in unsigned long.
661 (LOCK_PID_MAX): Remove; we now use more-reliable bounds.
662 (current_lock_owner): Prefer signed type for sizes.
663 Use memcpy, not strncpy, where memcpy is what is really wanted.
664 Don't assume (via atoi) that time_t and pid_t fit in int.
665 Check for time_t and/or pid_t out of range, e.g., via a network share.
666 Don't alloca where an auto var works fine.
667
668 * fileio.c: Fix some integer overflow issues.
669 (file_name_as_directory, Fexpand_file_name, Fsubstitute_in_file_name):
670 Don't assume string length fits in int.
671 (directory_file_name): Don't assume string length fits in long.
672 (make_temp_name): Don't assume pid fits in int, or that its print
673 length is less than 20.
674
675 * data.c (Fsubr_name): Rewrite to avoid a strlen call.
676
677 * coding.c (make_subsidiaries): Don't assume string length fits in int.
678
679 * callproc.c (child_setup): Rewrite to avoid two strlen calls.
680
681 * process.c (Fformat_network_address): Use EMACS_INT, not EMACS_UINT.
682 We prefer signed integers, even for size calculations.
683
684 * emacs.c: Don't assume string length fits in 'int'.
685 (DEFINE_DUMMY_FUNCTION, sort_args): Use ptrdiff_t, not int.
686 (main): Don't invoke strlen when not needed.
687
688 * dbusbind.c (XD_ERROR): Don't arbitrarily truncate string.
689 (XD_DEBUG_MESSAGE): Don't waste a byte.
690
691 * callproc.c (getenv_internal_1, getenv_internal)
692 (Fgetenv_internal):
693 * buffer.c (init_buffer): Don't assume string length fits in 'int'.
694
695 * lread.c (invalid_syntax): Omit length argument.
696 All uses changed. This doesn't fix a bug, but it simplifies the
697 code away from its former Hollerith-constant appearance, and it's
698 one less 'int' to worry about when looking at integer-overflow issues.
699 (string_to_number): Simplify 2011-04-26 change by invoking xsignal1.
700
701 * lisp.h (DEFUN): Remove bogus use of sizeof (struct Lisp_Subr).
702 This didn't break anything, but it didn't help either.
703 It's confusing to put a bogus integer in a place where the actual
704 value does not matter.
705 (LIST_END_P): Remove unused macro and its bogus comment.
706 (make_fixnum_or_float): Remove unnecessary cast to EMACS_INT.
707
708 * lisp.h (union Lisp_Object.i): EMACS_INT, not EMACS_UINT.
709 This is for consistency with the ordinary, non-USE_LISP_UNION_TYPE,
710 implementation.
711 (struct Lisp_Bool_Vector.size): EMACS_INT, not EMACS_UINT.
712 We prefer signed types, and the value cannot exceed the EMACS_INT
713 range anyway (because otherwise the length would not be representable).
714 (XSET) [USE_LISP_UNION_TYPE]: Use uintptr_t and intptr_t,
715 not EMACS_UINT and EMACS_INT, when converting pointer to integer.
716 This avoids a GCC warning when WIDE_EMACS_INT.
717
718 * indent.c (sane_tab_width): New function.
719 (current_column, scan_for_column, Findent_to, position_indentation)
720 (compute_motion): Use it. This is just for clarity.
721 (Fcompute_motion): Don't assume hscroll and tab offset fit in int.
722
723 * image.c (xbm_image_p): Don't assume stated width, height fit in int.
724
725 * lisp.h (lint_assume): New macro.
726 * composite.c (composition_gstring_put_cache):
727 * ftfont.c (ftfont_shape_by_flt): Use it to pacify GCC 4.6.0.
728
729 * editfns.c, insdel.c:
730 Omit unnecessary forward decls, to simplify future changes.
731
732 * ftfont.c (ftfont_shape_by_flt): Use signed integers for lengths.
733
734 * font.c (Ffont_shape_gstring): Don't assume glyph len fits in 'int'.
735
736 * fns.c (Ffillarray): Don't assume bool vector size fits in 'int'.
737 Use much-faster test for byte-length change.
738 Don't assume string byte-length fits in 'int'.
739 Check that character arg fits in 'int'.
740 (mapcar1): Declare byte as byte, for clarity.
741
742 * alloc.c (Fmake_bool_vector): Avoid unnecessary multiplication.
743
744 * fns.c (concat): Catch string overflow earlier.
745 Do not rely on integer wraparound.
746
747 * dispextern.h (struct it.overlay_strings_charpos)
748 (struct it.selective): Now EMACS_INT, not int.
749 * xdisp.c (forward_to_next_line_start)
750 (back_to_previous_visible_line_start)
751 (reseat_at_next_visible_line_start, next_element_from_buffer):
752 Don't arbitrarily truncate the value of 'selective' to int.
753
754 * xdisp.c (init_iterator): Use XINT, not XFASTINT; it might be < 0.
755
756 * composite.c: Don't truncate sizes to 'int'.
757 (composition_gstring_p, composition_reseat_it)
758 (composition_adjust_point): Use EMACS_INT, not int.
759 (get_composition_id, composition_gstring_put_cache): Use EMACS_INT,
760 not EMACS_UINT, for indexes.
761
762 * category.h (CATEGORY_SET_P): Remove unnecessary cast to EMACS_INT.
763
764 * buffer.c: Include <verify.h>.
765 (struct sortvec.priority, struct sortstr.priority):
766 Now EMACS_INT, not int.
767 (compare_overlays, cmp_for_strings): Avoid subtraction overflow.
768 (struct sortstr.size, record_overlay_string)
769 (struct sortstrlist.size, struct sortlist.used):
770 Don't truncate size to int.
771 (record_overlay_string): Check for size-calculation overflow.
772 (init_buffer_once): Check at compile-time, not run-time.
773
774 2011-06-22 Jim Meyering <meyering@redhat.com>
775
776 Don't leak an XBM-image-sized buffer
777 * image.c (xbm_load): Free the image buffer after using it.
778
779 2011-06-21 Paul Eggert <eggert@cs.ucla.edu>
780
781 Port to Sun C.
782 * composite.c (find_automatic_composition): Omit needless 'return 0;'
783 that Sun C diagnosed.
784 * fns.c (secure_hash): Fix pointer signedness issue.
785 * intervals.c (static_offset_intervals): New function.
786 (offset_intervals): Use it.
787
788 2011-06-21 Leo Liu <sdl.web@gmail.com>
789
790 * deps.mk (fns.o):
791 * makefile.w32-in ($(BLD)/fns.$(O)): Include sha256.h and
792 sha512.h.
793
794 * fns.c (secure_hash): Rename from crypto_hash_function and change
795 the first arg to accept symbols.
796 (Fsecure_hash): New primitive.
797 (syms_of_fns): New symbols.
798
799 2011-06-20 Deniz Dogan <deniz@dogan.se>
800
801 * process.c (Fset_process_buffer): Clarify return value in
802 docstring.
803
804 2011-06-18 Chong Yidong <cyd@stupidchicken.com>
805
806 * dispnew.c (add_window_display_history): Use BVAR.
807
808 * xdisp.c (debug_method_add): Use BVAR.
809 (check_window_end, dump_glyph_matrix, dump_glyph)
810 (dump_glyph_row, dump_glyph_string): Convert arglist to ANSI C.
811
812 * xfaces.c (check_lface_attrs, check_lface, dump_realized_face):
813 Likewise.
814
815 * xfns.c (Fx_create_frame, x_create_tip_frame): Delay image cache
816 check till after the cache is created in init_frame_faces.
817
818 2011-06-17 Stefan Monnier <monnier@iro.umontreal.ca>
819
820 * fns.c (Fsafe_length): Yet another int/Lisp_Object mixup.
821
822 2011-06-16 Paul Eggert <eggert@cs.ucla.edu>
823
824 * lisp.h: Include <limits.h>, for INT_MAX, LONG_MAX, LLONG_MAX.
825 Without this, prin1 mishandles Lisp_Misc_Save_Value printing on
826 hosts with pre-C99 libraries, because pD is wrongly defined to "t".
827
828 Improve buffer-overflow checking (Bug#8873).
829 * fileio.c (Finsert_file_contents):
830 * insdel.c (insert_from_buffer_1, replace_range, replace_range_2):
831 Remove the old (too-loose) buffer overflow checks.
832 They weren't needed, since make_gap checks for buffer overflow.
833 * insdel.c (make_gap_larger): Catch buffer overflows that were missed.
834 The old code merely checked for Emacs fixnum overflow, and relied
835 on undefined (wraparound) behavior. The new code avoids undefined
836 behavior, and also checks for ptrdiff_t and/or size_t overflow.
837
838 * editfns.c (Finsert_char): Don't dump core with very negative counts.
839 Tune. Don't use wider integers than needed. Don't use alloca.
840 Use a bigger 'string' buffer. Rewrite to avoid 'n > 0' test.
841
842 * insdel.c (replace_range): Fix buf overflow when insbytes < outgoing.
843
844 * insdel.c, lisp.h (buffer_overflow): New function.
845 (insert_from_buffer_1, replace_range, replace_range_2):
846 * insdel.c (make_gap_larger):
847 * editfns.c (Finsert_char):
848 * fileio.c (Finsert_file_contents): Use it, to normalize wording.
849
850 * buffer.h (BUF_BYTES_MAX): Cast to ptrdiff_t so that it's signed.
851
852 2011-06-15 Paul Eggert <eggert@cs.ucla.edu>
853
854 Integer overflow and signedness fixes (Bug#8873).
855
856 * ccl.c (ASCENDING_ORDER): New macro, to work around GCC bug 43772.
857 (GET_CCL_RANGE, IN_INT_RANGE): Use it.
858
859 * fileio.c: Don't assume EMACS_INT fits in off_t.
860 (emacs_lseek): New static function.
861 (Finsert_file_contents, Fwrite_region): Use it.
862 Use SEEK_SET, SEEK_CUR, SEEK_END as appropriate.
863
864 * fns.c (Fload_average): Don't assume 100 * load average fits in int.
865
866 * fns.c: Don't overflow int when computing a list length.
867 * fns.c (QUIT_COUNT_HEURISTIC): New constant.
868 (Flength, Fsafe_length): Use EMACS_INT, not int, to avoid unwanted
869 truncation on 64-bit hosts. Check for QUIT every
870 QUIT_COUNT_HEURISTIC entries rather than every other entry; that's
871 faster and is responsive enough.
872 (Flength): Report an error instead of overflowing an integer.
873 (Fsafe_length): Return a float if the value is not representable
874 as a fixnum. This shouldn't happen except in contrived situations.
875 (Fnthcdr, Fsort): Don't assume list length fits in int.
876 (Fcopy_sequence): Don't assume vector length fits in int.
877
878 * alloc.c: Check that resized vectors' lengths fit in fixnums.
879 (header_size, word_size): New constants.
880 (allocate_vectorlike): Don't check size overflow here.
881 (allocate_vector): Check it here instead, since this is the only
882 caller of allocate_vectorlike that could cause overflow.
883 Check that the new vector's length is representable as a fixnum.
884
885 * fns.c (next_almost_prime): Don't return a multiple of 3 or 5.
886 The previous code was bogus. For example, next_almost_prime (32)
887 returned 39, which is undesirable as it is a multiple of 3; and
888 next_almost_prime (24) returned 25, which is a multiple of 5 so
889 why was the code bothering to check for multiples of 7?
890
891 * bytecode.c (exec_byte_code): Use ptrdiff_t, not int, for vector length.
892
893 * eval.c, doprnt.c (SIZE_MAX): Remove; inttypes.h defines this now.
894
895 Variadic C functions now count arguments with ptrdiff_t.
896 This partly undoes my 2011-03-30 change, which replaced int with size_t.
897 Back then I didn't know that the Emacs coding style prefers signed int.
898 Also, in the meantime I found a few more instances where arguments
899 were being counted with int, which may truncate counts on 64-bit
900 machines, or EMACS_INT, which may be unnecessarily wide.
901 * lisp.h (struct Lisp_Subr.function.aMANY)
902 (DEFUN_ARGS_MANY, internal_condition_case_n, safe_call):
903 Arg counts are now ptrdiff_t, not size_t.
904 All variadic functions and their callers changed accordingly.
905 (struct gcpro.nvars): Now size_t, not size_t. All uses changed.
906 * bytecode.c (exec_byte_code): Check maxdepth for overflow,
907 to avoid potential buffer overrun. Don't assume arg counts fit in 'int'.
908 * callint.c (Fcall_interactively): Check arg count for overflow,
909 to avoid potential buffer overrun. Use signed char, not 'int',
910 for 'varies' array, so that we needn't bother to check its size
911 calculation for overflow.
912 * editfns.c (Fformat): Use ptrdiff_t, not EMACS_INT, to count args.
913 * eval.c (apply_lambda):
914 * fns.c (Fmapconcat): Use XFASTINT, not XINT, to get args length.
915 (struct textprop_rec.argnum): Now ptrdiff_t, not int. All uses changed.
916 (mapconcat): Use ptrdiff_t, not int and EMACS_INT, to count args.
917
918 * callint.c (Fcall_interactively): Don't use index var as event count.
919
920 * vm-limit.c (check_memory_limits): Fix incorrect extern function decls.
921 * mem-limits.h (SIZE): Remove; no longer used.
922
923 * xterm.c (x_alloc_nearest_color_1): Prefer int to long when int works.
924
925 Remove unnecessary casts.
926 * xterm.c (x_term_init):
927 * xfns.c (x_set_border_pixel):
928 * widget.c (create_frame_gcs): Remove casts to unsigned long etc.
929 These aren't needed now that we assume ANSI C.
930
931 * sound.c (Fplay_sound_internal): Remove cast to unsigned long.
932 It's more likely to cause problems (due to unsigned overflow)
933 than to cure them.
934
935 * dired.c (Ffile_attributes): Don't use 32-bit hack on 64-bit hosts.
936
937 * unexelf.c (unexec): Don't assume BSS addr fits in unsigned.
938
939 * xterm.c (handle_one_xevent): Omit unnecessary casts to unsigned.
940
941 * keyboard.c (modify_event_symbol): Don't limit alist len to UINT_MAX.
942
943 * lisp.h (CHAR_TABLE_SET): Omit now-redundant test.
944
945 * lread.c (Fload): Don't compare a possibly-garbage time_t value.
946
947 GLYPH_CODE_FACE returns EMACS_INT, not int.
948 * dispextern.h (merge_faces):
949 * xfaces.c (merge_faces):
950 * xdisp.c (get_next_display_element, next_element_from_display_vector):
951 Don't assume EMACS_INT fits in int.
952
953 * character.h (CHAR_VALID_P): Remove unused parameter.
954 * fontset.c, lisp.h, xdisp.c: All uses changed.
955
956 * editfns.c (Ftranslate_region_internal): Omit redundant test.
957
958 * fns.c (concat): Minor tuning based on overflow analysis.
959 This doesn't fix any bugs. Use int to hold character, instead
960 of constantly refetching from Emacs object. Use XFASTINT, not
961 XINT, for value known to be a character. Don't bother comparing
962 a single byte to 0400, as it's always less.
963
964 * floatfns.c (Fexpt):
965 * fileio.c (make_temp_name): Omit unnecessary cast to unsigned.
966
967 * editfns.c (Ftranslate_region_internal): Use int, not EMACS_INT
968 for characters.
969
970 * doc.c (get_doc_string): Omit (unsigned)c that mishandled negatives.
971
972 * data.c (Faset): If ARRAY is a string, check that NEWELT is a char.
973 Without this fix, on a 64-bit host (aset S 0 4294967386) would
974 incorrectly succeed when S was a string, because 4294967386 was
975 truncated before it was used.
976
977 * chartab.c (Fchar_table_range): Use CHARACTERP to check range.
978 Otherwise, an out-of-range integer could cause undefined behavior
979 on a 64-bit host.
980
981 * composite.c: Use int, not EMACS_INT, for characters.
982 (fill_gstring_body, composition_compute_stop_pos): Use int, not
983 EMACS_INT, for values that are known to be in character range.
984 This doesn't fix any bugs but is the usual style inside Emacs and
985 may generate better code on 32-bit machines.
986
987 Make sure a 64-bit char is never passed to ENCODE_CHAR.
988 This is for reasons similar to the recent CHAR_STRING fix.
989 * charset.c (Fencode_char): Check that character arg is actually
990 a character. Pass an int to ENCODE_CHAR.
991 * charset.h (ENCODE_CHAR): Verify that the character argument is no
992 wider than 'int', as a compile-time check to prevent future regressions
993 in this area.
994
995 * character.c (char_string): Remove unnecessary casts.
996
997 Make sure a 64-bit char is never passed to CHAR_STRING.
998 Otherwise, CHAR_STRING would do the wrong thing on a 64-bit platform,
999 by silently ignoring the top 32 bits, allowing some values
1000 that were far too large to be valid characters.
1001 * character.h: Include <verify.h>.
1002 (CHAR_STRING, CHAR_STRING_ADVANCE): Verify that the character
1003 arguments are no wider than unsigned, as a compile-time check
1004 to prevent future regressions in this area.
1005 * data.c (Faset):
1006 * editfns.c (Fchar_to_string, general_insert_function, Finsert_char)
1007 (Fsubst_char_in_region):
1008 * fns.c (concat):
1009 * xdisp.c (decode_mode_spec_coding):
1010 Adjust to CHAR_STRING's new requirement.
1011 * editfns.c (Finsert_char, Fsubst_char_in_region):
1012 * fns.c (concat): Check that character args are actually
1013 characters. Without this test, these functions did the wrong
1014 thing with wildly out-of-range values on 64-bit hosts.
1015
1016 Remove incorrect casts to 'unsigned' that lose info on 64-bit hosts.
1017 These casts should not be needed on 32-bit hosts, either.
1018 * keyboard.c (read_char):
1019 * lread.c (Fload): Remove casts to unsigned.
1020
1021 * lisp.h (UNSIGNED_CMP): New macro.
1022 This fixes comparison bugs on 64-bit hosts.
1023 (ASCII_CHAR_P): Use it.
1024 * casefiddle.c (casify_object):
1025 * character.h (ASCII_BYTE_P, CHAR_VALID_P)
1026 (SINGLE_BYTE_CHAR_P, CHAR_STRING):
1027 * composite.h (COMPOSITION_ENCODE_RULE_VALID):
1028 * dispextern.h (FACE_FROM_ID):
1029 * keyboard.c (read_char): Use UNSIGNED_CMP.
1030
1031 * xmenu.c (dialog_selection_callback) [!USE_GTK]: Cast to intptr_t,
1032 not to EMACS_INT, to avoid GCC warning.
1033
1034 * xfns.c (x_set_scroll_bar_default_width): Remove unused 'int' locals.
1035
1036 * buffer.h (PTR_BYTE_POS, BUF_PTR_BYTE_POS): Remove harmful cast.
1037 The cast incorrectly truncated 64-bit byte offsets to 32 bits, and
1038 isn't needed on 32-bit machines.
1039
1040 * buffer.c (Fgenerate_new_buffer_name):
1041 Use EMACS_INT for count, not int.
1042 (advance_to_char_boundary): Return EMACS_INT, not int.
1043
1044 * data.c (Qcompiled_function): Now static.
1045
1046 * window.c (window_body_lines): Now static.
1047
1048 * image.c (gif_load): Rename local to avoid shadowing.
1049
1050 * lisp.h (SAFE_ALLOCA_LISP): Check for integer overflow.
1051 (struct Lisp_Save_Value): Use ptrdiff_t, not int, for 'integer' member.
1052 * alloc.c (make_save_value): Integer argument is now of type
1053 ptrdiff_t, not int.
1054 (mark_object): Use ptrdiff_t, not int.
1055 * lisp.h (pD): New macro.
1056 * print.c (print_object): Use it.
1057
1058 * alloc.c: Use EMACS_INT, not int, to count objects.
1059 (total_conses, total_markers, total_symbols, total_vector_size)
1060 (total_free_conses, total_free_markers, total_free_symbols)
1061 (total_free_floats, total_floats, total_free_intervals)
1062 (total_intervals, total_strings, total_free_strings):
1063 Now EMACS_INT, not int. All uses changed.
1064 (Fgarbage_collect): Compute overall total using a double, so that
1065 integer overflow is less likely to be a problem. Check for overflow
1066 when converting back to an integer.
1067 (n_interval_blocks, n_string_blocks, n_float_blocks, n_cons_blocks)
1068 (n_vectors, n_symbol_blocks, n_marker_blocks): Remove.
1069 These were 'int' variables that could overflow on 64-bit hosts;
1070 they were never used, so remove them instead of repairing them.
1071 (nzombies, ngcs, max_live, max_zombies): Now EMACS_INT, not 'int'.
1072 (inhibit_garbage_collection): Set gc_cons_threshold to max value.
1073 Previously, this ceilinged at INT_MAX, but that doesn't work on
1074 64-bit machines.
1075 (allocate_pseudovector): Don't use EMACS_INT when int would do.
1076
1077 * alloc.c (Fmake_bool_vector): Don't assume vector size fits in int.
1078 (allocate_vectorlike): Check for ptrdiff_t overflow.
1079 (mark_vectorlike, mark_char_table, mark_object): Avoid EMACS_UINT
1080 when a (possibly-narrower) signed value would do just as well.
1081 We prefer using signed arithmetic, to avoid comparison confusion.
1082
1083 * alloc.c: Catch some string size overflows that we were missing.
1084 (XMALLOC_OVERRUN_CHECK_SIZE) [!XMALLOC_OVERRUN_CHECK]: Define to 0,
1085 for convenience in STRING_BYTES_MAX.
1086 (STRING_BYTES_MAX): New macro, superseding the old one in lisp.h.
1087 The definition here is exact; the one in lisp.h was approximate.
1088 (allocate_string_data): Check for string overflow. This catches
1089 some instances we weren't catching before. Also, it catches
1090 size_t overflow on (unusual) hosts where SIZE_MAX <= min
1091 (PTRDIFF_MAX, MOST_POSITIVE_FIXNUM), e.g., when size_t is 32 bits
1092 and ptrdiff_t and EMACS_INT are both 64 bits.
1093
1094 * character.c, coding.c, doprnt.c, editfns.c, eval.c:
1095 All uses of STRING_BYTES_MAX replaced by STRING_BYTES_BOUND.
1096 * lisp.h (STRING_BYTES_BOUND): Renamed from STRING_BYTES_MAX.
1097
1098 * character.c (string_escape_byte8): Fix nbytes/nchars typo.
1099
1100 * alloc.c (Fmake_string): Check for out-of-range init.
1101
1102 2011-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
1103
1104 * eval.c (Fdefvaralias): Also mark the target as variable-special-p.
1105
1106 2011-06-14 Jan Djärv <jan.h.d@swipnet.se>
1107
1108 * xfns.c (x_set_scroll_bar_default_width): Remove argument to
1109 xg_get_default_scrollbar_width.
1110
1111 * gtkutil.c: Include emacsgtkfixed.h if HAVE_GTK3.
1112 (int_gtk_range_get_value): Move to the scroll bar part of the file.
1113 (style_changed_cb): Call update_theme_scrollbar_width and call
1114 x_set_scroll_bar_default_width and xg_frame_set_char_size for
1115 all frames (Bug#8505).
1116 (xg_create_frame_widgets): Call emacs_fixed_new if HAVE_GTK3 (Bug#8505).
1117 Call gtk_window_set_resizable if HAVE_GTK3.
1118 (x_wm_set_size_hint): Call emacs_fixed_set_min_size with min width
1119 and height if HAVE_GTK3 (Bug#8505).
1120 (scroll_bar_width_for_theme): New variable.
1121 (update_theme_scrollbar_width): New function.
1122 (xg_get_default_scrollbar_width): Move code to
1123 update_theme_scrollbar_width, just return scroll_bar_width_for_theme.
1124 (xg_initialize): Call update_theme_scrollbar_width.
1125
1126 * gtkutil.h (xg_get_default_scrollbar_width): Remove argument.
1127
1128 * emacsgtkfixed.c, emacsgtkfixed.h: New files.
1129
1130 2011-06-12 Martin Rudalics <rudalics@gmx.at>
1131
1132 * frame.c (make_frame): Call other_buffer_safely instead of
1133 other_buffer.
1134
1135 * window.c (temp_output_buffer_show): Call display_buffer with
1136 second argument Vtemp_buffer_show_specifiers and reset latter
1137 immediately after the call.
1138 (Vtemp_buffer_show_specifiers): New variable.
1139 (auto_window_vscroll_p, next_screen_context_lines)
1140 (Vscroll_preserve_screen_position): Remove leading asterisks from
1141 doc-strings.
1142
1143 2011-06-12 Paul Eggert <eggert@cs.ucla.edu>
1144
1145 Fix minor problems found by GCC 4.6.0 static checking.
1146 * buffer.c (Qclone_number): Remove for now, as it's unused.
1147 (record_buffer, Funrecord_buffer): Rename local to avoid shadowing.
1148 (record_buffer): Remove unused local.
1149 * frame.c (other_visible_frames, frame_buffer_list): Now static.
1150 (set_frame_buffer_list): Remove; unused.
1151 * frame.h (other_visible_frames): Remove decl.
1152 * keyboard.h (menu_items_inuse): Declare only if USE_GTK || USE_MOTIF.
1153 * lisp.h (frame_buffer_list, set_frame_buffer_list): Remove decls.
1154 (add_gpm_wait_descriptor, delete_gpm_wait_descriptor): Declare only
1155 if HAVE_GPM.
1156 * menu.c (menu_items_inuse): Now static unless USE_GTK || USE_MOTIF.
1157 * process.c (add_gpm_wait_descriptor, delete_gpm_wait_descriptor):
1158 Define only if HAVE_GPM.
1159 * widget.c (EmacsFrameResize, emacsFrameClassRec): Now static.
1160 (update_hints_inhibit): Remove; never set. All uses removed.
1161 * widgetprv.h (emacsFrameClassRec): Remove decl.
1162 * window.c (delete_deletable_window): Now returns void, since it
1163 wasn't returning anything.
1164 (compare_window_configurations): Remove unused locals.
1165 * xfns.c (x_set_scroll_bar_default_width): Remove unused locals.
1166 * xmenu.c (x_menu_set_in_use): Define only if USE_GTK || USE_MOTIF.
1167 (dialog_selection_callback) [!USE_GTK]: Prefer intptr_t for integers
1168 the same widths as pointers. This follows up on the 2011-05-06 patch.
1169 * xterm.c (x_alloc_lighter_color_for_widget): Define only if USE_LUCID.
1170 * xterm.h: Likewise.
1171 (x_menu_set_in_use): Declare only if USE_GTK || USE_MOTIF.
1172
1173 2011-06-12 Juanma Barranquero <lekktu@gmail.com>
1174
1175 * makefile.w32-in: Update dependencies.
1176 (LISP_H): Add lib/intprops.h.
1177
1178 2011-06-11 Chong Yidong <cyd@stupidchicken.com>
1179
1180 * image.c (gif_load): Add animation frame delay to the metadata.
1181 (syms_of_image): Use DEFSYM. New symbol `delay'.
1182
1183 2011-06-11 Martin Rudalics <rudalics@gmx.at>
1184
1185 * window.c (delete_deletable_window): Re-add.
1186 (Fset_window_configuration): Rewrite to handle dead buffers and
1187 consequently deletable windows.
1188 (window_tree, Fwindow_tree): Remove. Supply functionality in
1189 window.el.
1190 (compare_window_configurations): Simplify code.
1191
1192 2011-06-11 Andreas Schwab <schwab@linux-m68k.org>
1193
1194 * image.c (imagemagick_load_image): Fix type mismatch.
1195 (Fimagemagick_types): Likewise.
1196
1197 * window.h (replace_buffer_in_windows): Declare.
1198
1199 2011-06-11 Martin Rudalics <rudalics@gmx.at>
1200
1201 * buffer.c: New Lisp objects Qbuffer_list_update_hook and
1202 Qclone_number. Remove external declaration of Qdelete_window.
1203 (Fbuffer_list): Rewrite doc-string. Minor restructuring of
1204 code.
1205 (Fget_buffer_create, Fmake_indirect_buffer, Frename_buffer): Run
1206 Qbuffer_list_update_hook if allowed.
1207 (Fother_buffer): Rewrite doc-string. Major rewrite for new
1208 buffer list implementation.
1209 (other_buffer_safely): New function.
1210 (Fkill_buffer): Replace call to replace_buffer_in_all_windows by
1211 calls to replace_buffer_in_windows and
1212 replace_buffer_in_windows_safely. Run Qbuffer_list_update_hook
1213 if allowed.
1214 (record_buffer): Inhibit quitting and rewrite using quittable
1215 functions. Run Qbuffer_list_update_hook if allowed.
1216 (Frecord_buffer, Funrecord_buffer): New functions.
1217 (switch_to_buffer_1, Fswitch_to_buffer): Remove. Move
1218 switch-to-buffer to window.el.
1219 (bury-buffer): Move to window.el.
1220 (Vbuffer_list_update_hook): New variable.
1221
1222 * lisp.h (other_buffer_safely): Add prototype in buffer.c
1223 section.
1224
1225 * window.h (resize_frame_windows): Move up in code.
1226 (Fwindow_frame): Remove EXFUN.
1227 (replace_buffer_in_all_windows): Remove prototype.
1228 (replace_buffer_in_windows_safely): Add prototype.
1229
1230 * window.c: Declare Qdelete_window static again. Move down
1231 declaration of select_count.
1232 (Fnext_window, Fprevious_window): Rewrite doc-strings.
1233 (Fother_window): Move to window.el.
1234 (window_loop): Remove DELETE_BUFFER_WINDOWS and UNSHOW_BUFFER
1235 cases. Add REPLACE_BUFFER_IN_WINDOWS_SAFELY case.
1236 (Fdelete_windows_on, Freplace_buffer_in_windows): Move to
1237 window.el.
1238 (replace_buffer_in_windows): Implement by calling
1239 Qreplace_buffer_in_windows.
1240 (replace_buffer_in_all_windows): Remove with some functionality
1241 moved into replace_buffer_in_windows_safely.
1242 (replace_buffer_in_windows_safely): New function.
1243 (select_window_norecord, select_frame_norecord): Move in front
1244 of run_window_configuration_change_hook. Remove now obsolete
1245 declarations.
1246 (Fset_window_buffer): Rewrite doc-string. Call
1247 Qrecord_window_buffer.
1248 (keys_of_window): Move binding for other-window to window.el.
1249
1250 2011-06-11 Chong Yidong <cyd@stupidchicken.com>
1251
1252 * dispextern.h (struct image): Replace data member, whose int_val
1253 and ptr_val fields were not used by anything, with a single
1254 lisp_val object.
1255
1256 * image.c (Fimage_metadata, make_image, mark_image, tiff_load)
1257 (gif_clear_image, gif_load, imagemagick_load_image)
1258 (gs_clear_image, gs_load): Callers changed.
1259
1260 2011-06-10 Paul Eggert <eggert@cs.ucla.edu>
1261
1262 * buffer.h: Include <time.h>, for time_t.
1263 Needed to build on FreeBSD 8.2. Problem reported by Herbert J. Skuhra.
1264
1265 Fix minor problems found by static checking.
1266
1267 * image.c (PixelGetMagickColor): Declare if ImageMagick headers don't.
1268
1269 Make identifiers static if they are not used in other modules.
1270 * data.c (Qcompiled_function, Qframe, Qvector):
1271 * image.c (QimageMagick, Qsvg):
1272 * minibuf.c (Qmetadata):
1273 * window.c (resize_window_check, resize_root_window): Now static.
1274 * window.h (resize_window_check, resize_root_window): Remove decls.
1275
1276 * window.c (window_deletion_count, delete_deletable_window):
1277 Remove; unused.
1278 (window_body_lines): Now static.
1279 (Fdelete_other_windows_internal): Mark vars as initialized.
1280 Make sure 'resize_failed' is initialized.
1281 (run_window_configuration_change_hook): Rename local to avoid shadowing.
1282 (resize_window_apply): Remove unused local.
1283 * window.h (delete_deletable_window): Remove decl.
1284
1285 * image.c (gif_load, svg_load_image): Rename locals to avoid shadowing.
1286 (imagemagick_load_image): Fix pointer signedness problem by changing
1287 last arg from unsigned char * to char *. All uses changed.
1288 Also, fix a local for similar reasons.
1289 Remove unused locals. Remove locals to avoid shadowing.
1290 (fn_rsvg_handle_free): Remove; unused.
1291 (svg_load, svg_load_image): Fix pointer signedness problem.
1292 (imagemagick_load_image): Don't use garbage pointer image_wand.
1293
1294 * ftfont.c (ftfont_get_metrics, ftfont_drive_otf): Remove unused locals.
1295
1296 2011-06-10 Chong Yidong <cyd@stupidchicken.com>
1297
1298 * image.c (gif_load): Fix omitted cast error introduced by
1299 2011-06-06 change.
1300
1301 2011-06-10 Martin Rudalics <rudalics@gmx.at>
1302
1303 * window.h (resize_proportionally, orig_total_lines)
1304 (orig_top_line): Remove from window structure.
1305 (set_window_height, set_window_width, change_window_heights)
1306 (Fdelete_window): Remove prototypes.
1307 (resize_frame_windows): Remove duplicate declaration.
1308
1309 2011-06-10 Eli Zaretskii <eliz@gnu.org>
1310
1311 * window.h (resize_frame_windows, resize_window_check)
1312 (delete_deletable_window, resize_root_window)
1313 (resize_frame_windows): Declare prototypes.
1314
1315 * window.c (resize_window_apply): Make definition be "static" to
1316 match the prototype.
1317
1318 2011-06-10 Martin Rudalics <rudalics@gmx.at>
1319
1320 * window.c: Remove declarations of Qwindow_size_fixed,
1321 window_min_size_1, window_min_size_2, window_min_size,
1322 size_window, window_fixed_size_p, enlarge_window, delete_window.
1323 Remove static from declaration of Qdelete_window, it's
1324 temporarily needed by Fbury_buffer.
1325 (replace_window): Don't assign orig_top_line and
1326 orig_total_lines.
1327 (Fdelete_window, delete_window): Remove. Window deletion is
1328 handled by window.el.
1329 (window_loop): Remove DELETE_OTHER_WINDOWS case. Replace
1330 Fdelete_window calls with calls to Qdelete_window.
1331 (Fdelete_other_windows): Remove. Deleting other windows is
1332 handled by window.el.
1333 (window_fixed_size_p): Remove. Fixed-sizeness of windows is
1334 handled in window.el.
1335 (window_min_size_2, window_min_size_1, window_min_size): Remove.
1336 Window minimum sizes are handled in window.el.
1337 (shrink_windows, size_window, set_window_height)
1338 (set_window_width, change_window_heights, window_height)
1339 (window_width, CURBEG, CURSIZE, enlarge_window)
1340 (adjust_window_trailing_edge, Fadjust_window_trailing_edge)
1341 (Fenlarge_window, Fshrink_window): Remove. Window resizing is
1342 handled in window.el.
1343 (make_dummy_parent): Rename to make_parent_window and give it a
1344 second argument horflag.
1345 (make_window): Don't set resize_proportionally any more.
1346 (Fsplit_window): Remove. Windows are split in window.el.
1347 (save_restore_action, save_restore_orig_size)
1348 (shrink_window_lowest_first, save_restore_orig_size): Remove.
1349 Resize mini windows in window.el.
1350 (grow_mini_window, shrink_mini_window): Implement by calling
1351 Qresize_root_window_vertically, resize_window_check and
1352 resize_window_apply.
1353 (saved_window, Fset_window_configuration, save_window_save): Do
1354 not handle orig_top_line, orig_total_lines, and
1355 resize_proportionally.
1356 (window_min_height, window_min_width): Move to window.el.
1357 (keys_of_window): Move bindings for delete-other-windows,
1358 split-window, delete-window and enlarge-window to window.el.
1359
1360 * buffer.c: Temporarily extern Qdelete_window.
1361 (Fbury_buffer): Temporarily call Qdelete_window instead of
1362 Fdelete_window (Fbury_buffer will move to window.el soon).
1363
1364 * frame.c (set_menu_bar_lines_1): Remove code handling
1365 orig_top_line and orig_total_lines.
1366
1367 * dispnew.c (adjust_frame_glyphs_initially): Don't use
1368 set_window_height but set heights directly.
1369 (change_frame_size_1): Use resize_frame_windows.
1370
1371 * xdisp.c (init_xdisp): Don't use set_window_height but set
1372 heights directly.
1373
1374 * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines): Use
1375 resize_frame_windows instead of change_window_heights and run
1376 run_window_configuration_change_hook.
1377
1378 * w32fns.c (x_set_tool_bar_lines): Use resize_frame_windows
1379 instead of change_window_heights and run
1380 run_window_configuration_change_hook.
1381
1382 2011-06-09 Martin Rudalics <rudalics@gmx.at>
1383
1384 * window.c (replace_window): Rename second argument REPLACEMENT to
1385 NEW. New third argument SETFLAG. Rewrite.
1386 (delete_window, make_dummy_parent): Call replace_window with
1387 third argument 1.
1388 (window_list_1): Move down in code.
1389 (run_window_configuration_change_hook): Move set_buffer part
1390 before select_frame_norecord part in order to unwind correctly.
1391 Rename count1 to count.
1392 (recombine_windows, delete_deletable_window, resize_root_window)
1393 (Fdelete_other_windows_internal)
1394 (Frun_window_configuration_change_hook, make_parent_window)
1395 (resize_window_check, resize_window_apply, Fresize_window_apply)
1396 (resize_frame_windows, Fsplit_window_internal)
1397 (Fdelete_window_internal, Fresize_mini_window_internal): New
1398 functions.
1399 (syms_of_window): New variables Vwindow_splits and Vwindow_nest.
1400
1401 2011-06-08 Martin Rudalics <rudalics@gmx.at>
1402
1403 * window.h (window): Add some new members to window structure -
1404 normal_lines, normal_cols, new_total, new_normal, clone_number,
1405 splits, nest, prev_buffers, next_buffers.
1406 (WINDOW_TOTAL_SIZE): Move here from window.c.
1407 (MIN_SAFE_WINDOW_WIDTH, MIN_SAFE_WINDOW_HEIGHT): Define here.
1408
1409 * window.c (Fwindow_height, Fwindow_width, Fwindow_full_width_p):
1410 Remove.
1411 (make_dummy_parent): Set new members of windows structure.
1412 (make_window): Move down in code. Handle new members of window
1413 structure.
1414 (Fwindow_clone_number, Fwindow_splits, Fset_window_splits)
1415 (Fwindow_nest, Fset_window_nest, Fwindow_new_total)
1416 (Fwindow_normal_size, Fwindow_new_normal, Fwindow_prev_buffers)
1417 (Fset_window_prev_buffers, Fwindow_next_buffers)
1418 (Fset_window_next_buffers, Fset_window_clone_number): New
1419 functions.
1420 (Fwindow_hscroll, Fwindow_at, Fwindow_point, Fwindow_start)
1421 (Fwindow_end, Fwindow_line_height, Fset_window_dedicated_p):
1422 Doc-string fixes.
1423 (Fwindow_parameters, Fwindow_parameter, Fset_window_parameter):
1424 Argument WINDOW can be now internal window too.
1425 (Fwindow_use_time): Move up in code.
1426 (Fget_buffer_window): Rename argument FRAME to ALL-FRAMES.
1427 Rewrite doc-string.
1428 (Fset_window_configuration, saved_window)
1429 (Fcurrent_window_configuration, save_window_save): Handle new
1430 members of window structure.
1431 (WINDOW_TOTAL_SIZE, MIN_SAFE_WINDOW_WIDTH)
1432 (MIN_SAFE_WINDOW_HEIGHT): Move to window.h.
1433 (syms_of_window): New Lisp objects Qrecord_window_buffer,
1434 Qwindow_deletable_p, Qdelete_window, Qreplace_buffer_in_windows,
1435 Qget_mru_window, Qresize_root_window,
1436 Qresize_root_window_vertically, Qsafe, Qabove, Qbelow,
1437 Qauto_buffer_name; staticpro them.
1438
1439 2011-06-07 Martin Rudalics <rudalics@gmx.at>
1440
1441 * window.c (Fwindow_total_size, Fwindow_left_column)
1442 (Fwindow_top_line, window_body_lines, Fwindow_body_size)
1443 (Fwindow_list_1): New functions.
1444 (window_box_text_cols): Replace with window_body_cols.
1445 (Fwindow_width, Fscroll_left, Fscroll_right): Use
1446 window_body_cols instead of window_box_text_cols.
1447 (delete_window, Fset_window_configuration): Call
1448 delete_all_subwindows with window as argument.
1449 (delete_all_subwindows): Take a window as argument and not a
1450 structure. Rewrite.
1451 (window_loop): Remove handling of GET_LRU_WINDOW and
1452 GET_LARGEST_WINDOW.
1453 (Fget_lru_window, Fget_largest_window): Move to window.el.
1454
1455 * window.h: Extern window_body_cols instead of
1456 window_box_text_cols. delete_all_subwindows now takes a
1457 Lisp_Object as argument.
1458
1459 * indent.c (compute_motion, Fcompute_motion): Use
1460 window_body_cols instead of window_box_text_cols.
1461
1462 * frame.c (delete_frame): Call delete_all_subwindows with root
1463 window as argument.
1464
1465 2011-06-07 Daniel Colascione <dan.colascione@gmail.com>
1466
1467 * fns.c (Fputhash): Document return value.
1468
1469 2011-06-06 Chong Yidong <cyd@stupidchicken.com>
1470
1471 * image.c (gif_load): Implement gif89a spec "no disposal" method.
1472
1473 2011-06-06 Paul Eggert <eggert@cs.ucla.edu>
1474
1475 Cons<->int and similar integer overflow fixes (Bug#8794).
1476
1477 Check for overflow when converting integer to cons and back.
1478 * charset.c (Fdefine_charset_internal, Fdecode_char):
1479 Use cons_to_unsigned to catch overflow.
1480 (Fencode_char): Use INTEGER_TO_CONS.
1481 * composite.h (LGLYPH_CODE): Use cons_to_unsigned.
1482 (LGLYPH_SET_CODE): Use INTEGER_TO_CONS.
1483 * data.c (long_to_cons, cons_to_long): Remove.
1484 (cons_to_unsigned, cons_to_signed): New functions.
1485 These signal an error for invalid or out-of-range values.
1486 * dired.c (Ffile_attributes): Use INTEGER_TO_CONS.
1487 * fileio.c (Fset_visited_file_modtime): Use CONS_TO_INTEGER.
1488 * font.c (Ffont_variation_glyphs):
1489 * fontset.c (Finternal_char_font): Use INTEGER_TO_CONS.
1490 * lisp.h: Include <intprops.h>.
1491 (INTEGER_TO_CONS, CONS_TO_INTEGER): New macros.
1492 (cons_to_signed, cons_to_unsigned): New decls.
1493 (long_to_cons, cons_to_long): Remove decls.
1494 * undo.c (record_first_change): Use INTEGER_TO_CONS.
1495 (Fprimitive_undo): Use CONS_TO_INTEGER.
1496 * xfns.c (Fx_window_property): Likewise.
1497 * xselect.c: Include <limits.h>.
1498 (x_own_selection, selection_data_to_lisp_data):
1499 Use INTEGER_TO_CONS.
1500 (x_handle_selection_request, x_handle_selection_clear)
1501 (x_get_foreign_selection, Fx_disown_selection_internal)
1502 (Fx_get_atom_name, x_send_client_event): Use CONS_TO_INTEGER.
1503 (lisp_data_to_selection_data): Use cons_to_unsigned.
1504 (x_fill_property_data): Use cons_to_signed.
1505 Report values out of range.
1506
1507 Check for buffer and string overflow more precisely.
1508 * buffer.h (BUF_BYTES_MAX): New macro.
1509 * lisp.h (STRING_BYTES_MAX): New macro.
1510 * alloc.c (Fmake_string):
1511 * character.c (string_escape_byte8):
1512 * coding.c (coding_alloc_by_realloc):
1513 * doprnt.c (doprnt):
1514 * editfns.c (Fformat):
1515 * eval.c (verror):
1516 Use STRING_BYTES_MAX, not MOST_POSITIVE_FIXNUM,
1517 since they may not be the same number.
1518 * editfns.c (Finsert_char):
1519 * fileio.c (Finsert_file_contents):
1520 Likewise for BUF_BYTES_MAX.
1521
1522 * image.c: Use ptrdiff_t, not int, for sizes.
1523 (slurp_file): Switch from int to ptrdiff_t.
1524 All uses changed.
1525 (slurp_file): Check that file size fits in both size_t (for
1526 malloc) and ptrdiff_t (for sanity and safety).
1527
1528 * fileio.c (Fverify_visited_file_modtime): Avoid time overflow
1529 if b->modtime has its maximal value.
1530
1531 * dired.c (Ffile_attributes): Don't assume EMACS_INT has >32 bits.
1532
1533 Don't assume time_t can fit into int.
1534 * buffer.h (struct buffer.modtime): Now time_t, not int.
1535 * fileio.c (Fvisited_file_modtime): No need for time_t cast now.
1536 * undo.c (Fprimitive_undo): Use time_t, not int, for time_t value.
1537
1538 Minor fixes for signed vs unsigned integers.
1539 * character.h (MAYBE_UNIFY_CHAR):
1540 * charset.c (maybe_unify_char):
1541 * keyboard.c (read_char, reorder_modifiers):
1542 XINT -> XFASTINT, since the integer must be nonnegative.
1543 * ftfont.c (ftfont_spec_pattern):
1544 * keymap.c (access_keymap, silly_event_symbol_error):
1545 XUINT -> XFASTINT, since the integer must be nonnegative.
1546 (Fsingle_key_description, preferred_sequence_p): XUINT -> XINT,
1547 since it makes no difference and we prefer signed.
1548 * keyboard.c (record_char): Use XUINT when all the neighbors do.
1549 (access_keymap): NATNUMP -> INTEGERP, since the integer must be
1550 nonnegative.
1551
1552 2011-06-06 Stefan Monnier <monnier@iro.umontreal.ca>
1553
1554 * window.h (Fwindow_frame): Declare.
1555
1556 2011-06-06 Paul Eggert <eggert@cs.ucla.edu>
1557
1558 * alloc.c: Simplify handling of large-request failures (Bug#8800).
1559 (SPARE_MEMORY): Always define.
1560 (LARGE_REQUEST): Remove.
1561 (memory_full): Use SPARE_MEMORY rather than LARGE_REQUEST.
1562
1563 2011-06-06 Martin Rudalics <rudalics@gmx.at>
1564
1565 * lisp.h: Move EXFUNS for Fframe_root_window,
1566 Fframe_first_window and Fset_frame_selected_window to window.h.
1567
1568 * window.h: Move EXFUNS for Fframe_root_window,
1569 Fframe_first_window and Fset_frame_selected_window here from
1570 lisp.h.
1571
1572 * frame.c (Fwindow_frame, Fframe_first_window)
1573 (Fframe_root_window, Fframe_selected_window)
1574 (Fset_frame_selected_window): Move to window.c.
1575 (Factive_minibuffer_window): Move to minibuf.c.
1576 (Fother_visible_frames_p): New function.
1577
1578 * minibuf.c (Factive_minibuffer_window): Move here from frame.c.
1579
1580 * window.c (decode_window, decode_any_window): Move up in code.
1581 (Fwindowp, Fwindow_live_p): Rewrite doc-strings.
1582 (inhibit_frame_unsplittable): Remove unused variable.
1583 (Fwindow_buffer): Move up and rewrite doc-string.
1584 (Fwindow_parent, Fwindow_vchild, Fwindow_hchild, Fwindow_next)
1585 (Fwindow_prev): New functions.
1586 (Fwindow_frame): Move here from frame.c. Accept any window as
1587 argument.
1588 (Fframe_root_window, Fframe_first_window)
1589 (Fframe_selected_window): Move here from frame.c. Accept frame
1590 or arbitrary window as argument. Update doc-strings.
1591 (Fminibuffer_window): Move up in code.
1592 (Fwindow_minibuffer_p): Move up in code and simplify.
1593 (Fset_frame_selected_window): Move here from frame.c.
1594 Marginal rewrite.
1595 (Fselected_window, select_window, Fselect_window): Move up in
1596 code. Minor doc-string fixes.
1597
1598 2011-06-06 Paul Eggert <eggert@cs.ucla.edu>
1599
1600 * alloc.c (memory_full) [SYSTEM_MALLOC]: Port to MacOS (Bug#8800).
1601 Do not assume that spare memory exists; that assumption is valid
1602 only if SYSTEM_MALLOC.
1603 (LARGE_REQUEST): New macro, so that the issue of large requests
1604 is separated from the issue of spare memory.
1605
1606 2011-06-05 Andreas Schwab <schwab@linux-m68k.org>
1607
1608 * editfns.c (Fformat): Correctly handle zero flag with hexadecimal
1609 format. (Bug#8806)
1610
1611 * gtkutil.c (xg_get_default_scrollbar_width): Avoid warning.
1612
1613 * xfns.c (x_set_scroll_bar_default_width): Move declarations
1614 before statements.
1615
1616 2011-06-05 Jan Djärv <jan.h.d@swipnet.se>
1617
1618 * gtkutil.c (xg_get_default_scrollbar_width): New function.
1619
1620 * gtkutil.h: Declare xg_get_default_scrollbar_width.
1621
1622 * xfns.c (x_set_scroll_bar_default_width): If USE_GTK, get
1623 min width by calling x_set_scroll_bar_default_width (Bug#8505).
1624
1625 2011-06-05 Juanma Barranquero <lekktu@gmail.com>
1626
1627 * xdisp.c (single_display_spec_intangible_p): Remove declaration.
1628
1629 2011-06-04 Chong Yidong <cyd@stupidchicken.com>
1630
1631 * xselect.c (x_clipboard_manager_save): Remove redundant arg.
1632 (x_clipboard_manager_save): Add return value.
1633 (x_clipboard_manager_error_1, x_clipboard_manager_error_2):
1634 New error handlers.
1635 (x_clipboard_manager_save_frame, x_clipboard_manager_save_all):
1636 Obey Vx_select_enable_clipboard_manager. Catch errors in
1637 x_clipboard_manager_save (Bug#8779).
1638 (Vx_select_enable_clipboard_manager): New variable.
1639 (x_get_foreign_selection): Reduce scope of x_catch_errors (Bug#8790).
1640
1641 2011-06-04 Dan Nicolaescu <dann@ics.uci.edu>
1642
1643 * emacs.c (main): Warn when starting a GTK emacs in daemon mode.
1644
1645 2011-06-04 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
1646
1647 * fringe.c (update_window_fringes): Don't update overlay arrow bitmap
1648 in the current matrix if keep_current_p is non-zero.
1649
1650 2011-06-04 Eli Zaretskii <eliz@gnu.org>
1651
1652 * bidi.c (bidi_level_of_next_char): Fix last change.
1653
1654 2011-06-03 Eli Zaretskii <eliz@gnu.org>
1655
1656 Support bidi reordering of text covered by display properties.
1657
1658 * bidi.c (bidi_copy_it): Use offsetof instead of emulating it.
1659 (bidi_fetch_char, bidi_fetch_char_advance): New functions.
1660 (bidi_cache_search, bidi_cache_iterator_state)
1661 (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak)
1662 (bidi_level_of_next_char, bidi_move_to_visually_next):
1663 Support character positions inside a run of characters covered by a
1664 display string.
1665 (bidi_paragraph_init, bidi_resolve_explicit_1)
1666 (bidi_level_of_next_char): Call bidi_fetch_char and
1667 bidi_fetch_char_advance instead of FETCH_CHAR and
1668 FETCH_CHAR_ADVANCE.
1669 (bidi_init_it): Initialize new members.
1670 (LRE_CHAR, RLE_CHAR, PDF_CHAR, LRO_CHAR, RLO_CHAR): Remove macro
1671 definitions.
1672 (bidi_explicit_dir_char): Lookup character type in bidi_type_table,
1673 instead of using explicit *_CHAR codes.
1674 (bidi_resolve_explicit, bidi_resolve_weak):
1675 Use FETCH_MULTIBYTE_CHAR instead of FETCH_CHAR, as reordering of
1676 bidirectional text is supported only in multibyte buffers.
1677 (bidi_init_it): Accept additional argument FRAME_WINDOW_P and use
1678 it to initialize the frame_window_p member of struct bidi_it.
1679 (bidi_cache_iterator_state, bidi_resolve_explicit_1)
1680 (bidi_resolve_explicit, bidi_resolve_weak)
1681 (bidi_level_of_next_char, bidi_move_to_visually_next): Abort if
1682 bidi_it->nchars is non-positive.
1683 (bidi_level_of_next_char): Don't try to lookup the cache for the
1684 next/previous character if nothing is cached there yet, or if we
1685 were just reseat()'ed to a new position.
1686
1687 * xdisp.c (set_cursor_from_row): Set start and stop points
1688 according to the row's direction when priming the loop that looks
1689 for the glyph on which to display cursor.
1690 (single_display_spec_intangible_p): Function deleted.
1691 (display_prop_intangible_p): Reimplement to call
1692 handle_display_spec instead of single_display_spec_intangible_p.
1693 Accept 3 additional arguments needed by handle_display_spec.
1694 This fixes incorrect cursor motion across display property with complex
1695 values: lists, `(when COND...)' forms, etc.
1696 (single_display_spec_string_p): Support property values that are
1697 lists with the argument STRING its top-level element.
1698 (display_prop_string_p): Fix the condition for processing a
1699 property that is a list to be consistent with handle_display_spec.
1700 (handle_display_spec): New function, refactored from the
1701 last portion of handle_display_prop.
1702 (compute_display_string_pos): Accept additional argument
1703 FRAME_WINDOW_P. Call handle_display_spec to determine whether the
1704 value of a `display' property is a "replacing spec".
1705 (handle_single_display_spec): Accept 2 additional arguments BUFPOS
1706 and FRAME_WINDOW_P. If IT is NULL, don't set up the iterator from
1707 the display property, but just return a value indicating whether
1708 the display property will replace the characters it covers.
1709 (Fcurrent_bidi_paragraph_direction): Initialize the nchars and
1710 frame_window_p members of struct bidi_it.
1711 (compute_display_string_pos, compute_display_string_end):
1712 New functions.
1713 (push_it): Accept second argument POSITION, where pop_it should
1714 jump to continue iteration.
1715 (reseat_1): Initialize bidi_it.disp_pos.
1716
1717 * keyboard.c (adjust_point_for_property): Adjust the call to
1718 display_prop_intangible_p to its new signature.
1719
1720 * dispextern.h (struct bidi_it): New member frame_window_p.
1721 (bidi_init_it): Update prototypes.
1722 (display_prop_intangible_p): Update prototype.
1723 (compute_display_string_pos, compute_display_string_end):
1724 Declare prototypes.
1725 (struct bidi_it): New members nchars and disp_pos. ch_len is now
1726 EMACS_INT.
1727
1728 2011-06-02 Paul Eggert <eggert@cs.ucla.edu>
1729
1730 Malloc failure behavior now depends on size of allocation.
1731 * alloc.c (buffer_memory_full, memory_full): New arg NBYTES.
1732 * lisp.h: Change signatures accordingly.
1733 * alloc.c, buffer.c, editfns.c, menu.c, minibuf.c, xterm.c:
1734 All callers changed. (Bug#8762)
1735
1736 * gnutls.c: Use Emacs's memory allocators.
1737 Without this change, the gnutls library would invoke malloc etc.
1738 directly, which causes problems on non-SYNC_INPUT hosts, and which
1739 runs afoul of improving memory_full behavior. (Bug#8761)
1740 (fn_gnutls_global_set_mem_functions): New macro or function pointer.
1741 (emacs_gnutls_global_init): Use it to specify xmalloc, xrealloc,
1742 xfree instead of the default malloc, realloc, free.
1743 (Fgnutls_boot): No need to check for memory allocation failure,
1744 since xmalloc does that for us.
1745
1746 Remove arbitrary limit of 2**31 entries in hash tables. (Bug#8771)
1747 * category.c (hash_get_category_set):
1748 * ccl.c (ccl_driver):
1749 * charset.c (Fdefine_charset_internal):
1750 * charset.h (struct charset.hash_index):
1751 * composite.c (get_composition_id, gstring_lookup_cache)
1752 (composition_gstring_put_cache):
1753 * composite.h (struct composition.hash_index):
1754 * dispextern.h (struct image.hash):
1755 * fns.c (next_almost_prime, larger_vector, cmpfn_eql)
1756 (cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql)
1757 (hashfn_equal, hashfn_user_defined, make_hash_table)
1758 (maybe_resize_hash_table, hash_lookup, hash_put)
1759 (hash_remove_from_table, hash_clear, sweep_weak_table, SXHASH_COMBINE)
1760 (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector)
1761 (Fsxhash, Fgethash, Fputhash, Fmaphash):
1762 * image.c (make_image, search_image_cache, lookup_image)
1763 (xpm_put_color_table_h):
1764 * lisp.h (struct Lisp_Hash_Table):
1765 * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
1766 * print.c (print): Use 'EMACS_UINT' and 'EMACS_INT'
1767 for hashes and hash indexes, instead of 'unsigned' and 'int'.
1768 * alloc.c (allocate_vectorlike):
1769 Check for overflow in vector size calculations.
1770 * ccl.c (ccl_driver):
1771 Check for overflow when converting EMACS_INT to int.
1772 * fns.c, image.c: Remove unnecessary static decls that would otherwise
1773 need to be updated by these changes.
1774 * fns.c (make_hash_table, maybe_resize_hash_table):
1775 Check for integer overflow with large hash tables.
1776 (make_hash_table, maybe_resize_hash_table, Fmake_hash_table):
1777 Prefer the faster XFLOAT_DATA to XFLOATINT where either will do.
1778 (SXHASH_REDUCE): New macro.
1779 (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector):
1780 Use it instead of discarding useful hash info with large hash values.
1781 (sxhash_float): New function.
1782 (sxhash): Use it. No more need for "& INTMASK" due to above changes.
1783 * lisp.h (FIXNUM_BITS): New macro, useful for SXHASH_REDUCE etc.
1784 (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM, INTMASK):
1785 Rewrite to use FIXNUM_BITS, as this simplifies things.
1786 (next_almost_prime, larger_vector, sxhash, hash_lookup, hash_put):
1787 Adjust signatures to match updated version of code.
1788 (consing_since_gc): Now EMACS_INT, since a single hash table can
1789 use more than INT_MAX bytes.
1790
1791 2011-06-01 Dan Nicolaescu <dann@ics.uci.edu>
1792
1793 Make it possible to build with GCC-4.6+ -O2 -flto.
1794
1795 * emacs.c (__malloc_initialize_hook): Mark as EXTERNALLY_VISIBLE.
1796
1797 2011-06-01 Stefan Monnier <monnier@iro.umontreal.ca>
1798
1799 * minibuf.c (get_minibuffer, read_minibuf_unwind):
1800 Call minibuffer-inactive-mode.
1801
1802 2011-05-31 Juanma Barranquero <lekktu@gmail.com>
1803
1804 * makefile.w32-in ($(BLD)/data.$(O), $(BLD)/editfns.$(O)):
1805 Update dependencies.
1806
1807 2011-05-31 Dan Nicolaescu <dann@ics.uci.edu>
1808
1809 * data.c (init_data): Remove code for UTS, this system is not
1810 supported anymore.
1811
1812 2011-05-31 Dan Nicolaescu <dann@ics.uci.edu>
1813
1814 Don't force ./temacs to start in terminal mode.
1815
1816 * frame.c (make_initial_frame): Initialize faces in all cases, not
1817 only when CANNOT_DUMP is defined.
1818 * dispnew.c (init_display): Remove CANNOT_DUMP condition.
1819
1820 2011-05-31 Dan Nicolaescu <dann@ics.uci.edu>
1821
1822 * dispnew.c (add_window_display_history): Use const for the string
1823 pointer. Remove declaration, not needed.
1824
1825 2011-05-31 Paul Eggert <eggert@cs.ucla.edu>
1826
1827 Use 'inline', not 'INLINE'.
1828 <http://lists.gnu.org/archive/html/emacs-devel/2011-05/msg00914.html>
1829 * alloc.c, fontset.c (INLINE): Remove.
1830 * alloc.c, bidi.c, charset.c, coding.c, dispnew.c, fns.c, image.c:
1831 * intervals.c, keyboard.c, process.c, syntax.c, textprop.c, w32term.c:
1832 * xdisp.c, xfaces.c, xterm.c: Replace all uses of INLINE with inline.
1833 * gmalloc.c (register_heapinfo): Use inline unconditionally.
1834 * lisp.h (LISP_MAKE_RVALUE): Use inline, not __inline__.
1835
1836 2011-05-31 Dan Nicolaescu <dann@ics.uci.edu>
1837
1838 Make it possible to run ./temacs.
1839
1840 * callproc.c (set_initial_environment): Remove CANNOT_DUMP code,
1841 syms_of_callproc does the same thing. Remove test for
1842 "initialized", do it in the caller.
1843 * emacs.c (main): Avoid calling set_initial_environment when dumping.
1844
1845 2011-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
1846
1847 * minibuf.c (Finternal_complete_buffer): Return `category' metadata.
1848 (read_minibuf): Use get_minibuffer.
1849 (syms_of_minibuf): Use DEFSYM.
1850 (Qmetadata): New var.
1851 * data.c (Qbuffer): Don't make it static.
1852 (syms_of_data): Use DEFSYM.
1853
1854 2011-05-31 Paul Eggert <eggert@cs.ucla.edu>
1855
1856 * ccl.c (CCL_CODE_RANGE): Allow negative numbers. (Bug#8751)
1857 (CCL_CODE_MIN): New macro.
1858
1859 2011-05-30 Paul Eggert <eggert@cs.ucla.edu>
1860
1861 * alloc.c (lisp_align_malloc): Omit unnecessary val==NULL tests.
1862
1863 * eval.c (Qdebug): Now static.
1864 * lisp.h (Qdebug): Remove decl. This reverts a part of the
1865 2011-04-26T11:26:05Z!dan.colascione@gmail.com that inadvertently undid part of
1866 2011-04-14T06:48:41Z!eggert@cs.ucla.edu.
1867
1868 2011-05-29 Chong Yidong <cyd@stupidchicken.com>
1869
1870 * image.c: Various fixes to ImageMagick code comments.
1871 (Fimagemagick_types): Doc fix.
1872
1873 2011-05-29 Paul Eggert <eggert@cs.ucla.edu>
1874
1875 Minor fixes prompted by GCC 4.6.0 warnings.
1876
1877 * xselect.c (converted_selections, conversion_fail_tag): Now static.
1878
1879 * emacs.c [HAVE_X_WINDOWS]: Include "xterm.h".
1880 (x_clipboard_manager_save_all): Move extern decl to ...
1881 * xterm.h: ... here, so that it can be checked for consistency.
1882
1883 2011-05-29 Chong Yidong <cyd@stupidchicken.com>
1884
1885 * xselect.c (x_clipboard_manager_save_frame)
1886 (x_clipboard_manager_save_all): New functions.
1887 (Fx_clipboard_manager_save): Lisp function deleted.
1888
1889 * emacs.c (Fkill_emacs): Call x_clipboard_manager_save_all.
1890 * frame.c (delete_frame): Call x_clipboard_manager_save_frame.
1891
1892 * xterm.h: Update prototype.
1893
1894 2011-05-28 William Xu <william.xwl@gmail.com>
1895
1896 * nsterm.m (ns_term_shutdown): Synchronize user defaults before
1897 exiting (Bug#8239).
1898
1899 2011-05-28 Jim Meyering <meyering@redhat.com>
1900
1901 Avoid a sign-extension bug in crypto_hash_function.
1902 * fns.c (to_uchar): Define.
1903 (crypto_hash_function): Use it to convert some newly-signed
1904 variables to unsigned, to avoid sign-extension bugs. For example,
1905 without this change, (md5 "truc") would evaluate to
1906 45723a2aff78ff4fff7fff1114760e62 rather than the expected
1907 45723a2af3788c4ff17f8d1114760e62. Reported by Antoine Levitt in
1908 https://lists.gnu.org/archive/html/emacs-devel/2011-05/msg00883.html.
1909
1910 2011-05-27 Paul Eggert <eggert@cs.ucla.edu>
1911
1912 Integer overflow fixes.
1913
1914 * dbusbind.c: Serial number integer overflow fixes.
1915 (CHECK_DBUS_SERIAL_GET_SERIAL): New macro.
1916 (Fdbus_call_method_asynchronously, xd_read_message_1): Use a float
1917 to hold a serial number that is too large for a fixnum.
1918 (Fdbus_method_return_internal, Fdbus_method_error_internal):
1919 Check for serial numbers out of range. Decode any serial number
1920 that was so large that it became a float. (Bug#8722)
1921
1922 * dbusbind.c: Use XFASTINT rather than XUINT, and check for nonneg.
1923 (Fdbus_call_method, Fdbus_call_method_asynchronously):
1924 Use XFASTINT rather than XUINT when numbers are nonnegative.
1925 (xd_append_arg, Fdbus_method_return_internal):
1926 (Fdbus_method_error_internal): Likewise. Also, for unsigned
1927 arguments, check that Lisp number is nonnegative, rather than
1928 silently wrapping negative numbers around. (Bug#8722)
1929 (xd_read_message_1): Don't assume dbus_uint32_t can fit in int.
1930 (Bug#8722)
1931
1932 * data.c (arith_driver, Flsh): Avoid unnecessary casts to EMACS_UINT.
1933
1934 * ccl.c (ccl_driver): Redo slightly to avoid the need for 'unsigned'.
1935
1936 ccl: add integer overflow checks
1937 * ccl.c (CCL_CODE_MAX, GET_CCL_RANGE, GET_CCL_CODE, GET_CCL_INT):
1938 (IN_INT_RANGE): New macros.
1939 (ccl_driver): Use them to check for integer overflow when
1940 decoding a CCL program. Many of the new checks are whether XINT (x)
1941 fits in int; it doesn't always, on 64-bit hosts. The new version
1942 doesn't catch all possible integer overflows, but it's an
1943 improvement. (Bug#8719)
1944
1945 * alloc.c (make_event_array): Use XINT, not XUINT.
1946 There's no need for unsigned here.
1947
1948 * mem-limits.h (EXCEEDS_LISP_PTR) [!USE_LSB_TAG]: EMACS_UINT -> uintptr_t
1949 This follows up to the 2011-05-06 change that substituted uintptr_t
1950 for EMACS_INT. This case wasn't caught back then.
1951
1952 Rework Fformat to avoid integer overflow issues.
1953 * editfns.c: Include <float.h> unconditionally, as it's everywhere
1954 now (part of C89). Include <verify.h>.
1955 (MAX_10_EXP, CONVERTED_BYTE_SIZE): Remove; no longer needed.
1956 (pWIDE, pWIDElen, signed_wide, unsigned_wide): New defns.
1957 (Fformat): Avoid the prepass trying to compute sizes; it was only
1958 approximate and thus did not catch overflow reliably. Instead, walk
1959 through the format just once, formatting and computing sizes as we go,
1960 checking for integer overflow at every step, and allocating a larger
1961 buffer as needed. Keep track separately whether the format is
1962 multibyte. Keep only the most-recently calculated precision, rather
1963 than them all. Record whether each argument has been converted to
1964 string. Use EMACS_INT, not int, for byte and char and arg counts.
1965 Support field widths and precisions larger than INT_MAX. Avoid
1966 sprintf's undefined behavior with conversion specifications such as %#d
1967 and %.0c. Fix bug with strchr succeeding on '\0' when looking for
1968 flags. Fix bug with (format "%c" 256.0). Avoid integer overflow when
1969 formatting out-of-range floating point numbers with int
1970 formats. (Bug#8668)
1971
1972 * lisp.h (FIXNUM_OVERFLOW_P): Work even if arg is a NaN.
1973
1974 * data.c: Avoid integer truncation in expressions involving floats.
1975 * data.c: Include <intprops.h>.
1976 (arith_driver): When there's an integer overflow in an expression
1977 involving floating point, convert the integers to floating point
1978 so that the resulting value does not suffer from catastrophic
1979 integer truncation. For example, on a 64-bit host (* 4
1980 most-negative-fixnum 0.5) should yield about -4.6e+18, not zero.
1981 Do not rely on undefined behavior after integer overflow.
1982
1983 merge count_size_as_multibyte, parse_str_to_multibyte
1984 * character.c, character.h (count_size_as_multibyte):
1985 Rename from parse_str_to_multibyte; all uses changed.
1986 Check for integer overflow.
1987 * insdel.c, lisp.h (count_size_as_multibyte): Remove,
1988 since it's now a duplicate of the other. This is more of
1989 a character than a buffer op, so better that it's in character.c.
1990 * fns.c, print.c: Adjust to above changes.
1991
1992 2011-05-27 Stefan Monnier <monnier@iro.umontreal.ca>
1993
1994 * xselect.c (x_convert_selection): Yet another int/Lisp_Object mixup.
1995
1996 2011-05-27 Paul Eggert <eggert@cs.ucla.edu>
1997
1998 * xselect.c: Fix minor problems prompted by GCC 4.6.0 warnings.
1999 (x_handle_selection_request, frame_for_x_selection): Remove unused vars.
2000 (x_clipboard_manager_save): Now static.
2001 (Fx_clipboard_manager_save): Rename local to avoid shadowing.
2002
2003 * fns.c: Fix minor problems prompted by GCC 4.6.0 warnings.
2004 (crypto_hash_function): Now static.
2005 Fix pointer signedness problems. Avoid unnecessary initializations.
2006
2007 2011-05-27 Chong Yidong <cyd@stupidchicken.com>
2008
2009 * termhooks.h (Vselection_alist): Make it terminal-local.
2010
2011 * terminal.c (create_terminal): Initialize it.
2012
2013 * xselect.c: Support for clipboard managers.
2014 (Vselection_alist): Move to termhooks.h as terminal-local var.
2015 (LOCAL_SELECTION): New macro.
2016 (x_atom_to_symbol): Handle x_display_info_for_display fail case.
2017 (symbol_to_x_atom): Remove gratuitous arg.
2018 (x_handle_selection_request, lisp_data_to_selection_data)
2019 (x_get_foreign_selection, Fx_register_dnd_atom): Callers changed.
2020 (x_own_selection, x_get_local_selection, x_convert_selection):
2021 New arg, specifying work frame. Use terminal-local Vselection_alist.
2022 (some_frame_on_display): Delete unused function.
2023 (Fx_own_selection_internal, Fx_get_selection_internal)
2024 (Fx_disown_selection_internal, Fx_selection_owner_p)
2025 (Fx_selection_exists_p): New optional frame arg.
2026 (frame_for_x_selection, Fx_clipboard_manager_save): New functions.
2027 (x_handle_selection_clear): Don't treat other terminals with the
2028 same keyboard specially. Use the terminal-local Vselection_alist.
2029 (x_clear_frame_selections): Use Frun_hook_with_args.
2030
2031 * xterm.c (x_term_init): Intern ATOM and CLIPBOARD_MANAGER atoms.
2032
2033 * xterm.h: Add support for those atoms.
2034
2035 2011-05-26 Chong Yidong <cyd@stupidchicken.com>
2036
2037 * xselect.c: ICCCM-compliant handling of MULTIPLE targets.
2038 (converted_selections, conversion_fail_tag): New global variables.
2039 (x_selection_request_lisp_error): Free the above.
2040 (x_get_local_selection): Remove unnecessary code.
2041 (x_reply_selection_request): Args changed; handle arbitrary array
2042 of converted selections stored in converted_selections.
2043 Separate the XChangeProperty and SelectionNotify steps.
2044 (x_handle_selection_request): Rewrite to handle MULTIPLE target.
2045 (x_convert_selection): New function.
2046 (x_handle_selection_event): Simplify.
2047 (x_get_foreign_selection): Don't ignore incoming requests while
2048 waiting for an answer; this will fail when we implement
2049 SAVE_TARGETS, and seems unnecessary anyway.
2050 (selection_data_to_lisp_data): Recognize ATOM_PAIR type.
2051 (Vx_sent_selection_functions): Doc fix.
2052
2053 2011-05-26 Leo Liu <sdl.web@gmail.com>
2054
2055 * editfns.c (Ftranspose_regions): Allow empty regions. (Bug#8699)
2056
2057 2011-05-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2058
2059 * dispextern.h (struct glyph_row): New member fringe_bitmap_periodic_p.
2060
2061 * dispnew.c (shift_glyph_matrix, scrolling_window): Mark scrolled row
2062 for fringe update if it has periodic bitmap.
2063 (row_equal_p): Also compare left_fringe_offset, right_fringe_offset,
2064 and fringe_bitmap_periodic_p.
2065
2066 * fringe.c (get_fringe_bitmap_data): New function.
2067 (draw_fringe_bitmap_1, update_window_fringes): Use it.
2068 (update_window_fringes): Record periodicity of fringe bitmap in glyph
2069 row. Mark glyph row for fringe update if periodicity changed.
2070
2071 * xdisp.c (try_window_reusing_current_matrix): Don't mark scrolled row
2072 for fringe update unless it has periodic bitmap.
2073
2074 2011-05-25 Kenichi Handa <handa@m17n.org>
2075
2076 * xdisp.c (get_next_display_element): Set correct it->face_id for
2077 a static composition.
2078
2079 2011-05-24 Leo Liu <sdl.web@gmail.com>
2080
2081 * deps.mk (fns.o):
2082 * makefile.w32-in ($(BLD)/fns.$(O)): Include sha1.h.
2083
2084 * fns.c (crypto_hash_function, Fsha1): New function.
2085 (Fmd5): Use crypto_hash_function.
2086 (syms_of_fns): Add Ssha1.
2087
2088 2011-05-22 Paul Eggert <eggert@cs.ucla.edu>
2089
2090 * gnutls.c: Remove unused macros.
2091 (fn_gnutls_transport_set_lowat, fn_gnutls_transport_set_pull_function):
2092 (fn_gnutls_transport_set_push_function) [!WINDOWSNT]:
2093 Remove macros that are defined and never used.
2094 Caught by gcc -Wunused-macros (GCC 4.6.0, Fedora 14).
2095
2096 2011-05-22 Chong Yidong <cyd@stupidchicken.com>
2097
2098 * xselect.c (syms_of_xselect): Remove unused symbol SAVE_TARGETS.
2099 (Fx_get_selection_internal): Minor cleanup.
2100 (Fx_own_selection_internal): Rename arguments for consistency with
2101 select.el.
2102
2103 2011-05-22 Paul Eggert <eggert@cs.ucla.edu>
2104
2105 * xselect.c (QSAVE_TARGETS): New static var, to fix build failure.
2106
2107 2011-05-22 Chong Yidong <cyd@stupidchicken.com>
2108
2109 * xselect.c (syms_of_xselect): Include character.h; use DEFSYM.
2110
2111 2011-05-21 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2112
2113 * dispnew.c (scrolling_window): Don't exclude the case that the
2114 last enabled row in the desired matrix touches the bottom boundary.
2115
2116 2011-05-21 Glenn Morris <rgm@gnu.org>
2117
2118 * Makefile.in ($(etc)/DOC): Make second command line even shorter.
2119 (SOME_MACHINE_OBJECTS): Replace FONT_OBJ by its maximal expansion,
2120 and add some more files.
2121
2122 2011-05-20 Eli Zaretskii <eliz@gnu.org>
2123
2124 * callproc.c (Fcall_process) [MSDOS]: Fix arguments to
2125 report_file_error introduced by the change from 2011-05-07.
2126
2127 2011-05-20 Paul Eggert <eggert@cs.ucla.edu>
2128
2129 * systime.h (Time): Define only if emacs is defined.
2130 This is to allow ../lib-src/profile.c to be compiled on FreeBSD,
2131 where the include path doesn't have X11/X.h by default. See
2132 <http://lists.gnu.org/archive/html/emacs-devel/2011-05/msg00561.html>.
2133
2134 2011-05-20 Kenichi Handa <handa@m17n.org>
2135
2136 * composite.c (find_automatic_composition): Fix previous change.
2137
2138 2011-05-20 Glenn Morris <rgm@gnu.org>
2139
2140 * lisp.mk: New file, split from Makefile.in.
2141 * Makefile.in (lisp): Move to separate file, inserted by @lisp_frag@.
2142 (shortlisp): Remove.
2143 ($(etc)/DOC): Edit lisp.mk rather than using $shortlisp.
2144
2145 2011-05-19 Glenn Morris <rgm@gnu.org>
2146
2147 * Makefile.in (MSDOS_SUPPORT_REAL, MSDOS_SUPPORT, NS_SUPPORT)
2148 (REAL_MOUSE_SUPPORT, GPM_MOUSE_SUPPORT, MOUSE_SUPPORT, TOOLTIP_SUPPORT)
2149 (BASE_WINDOW_SUPPORT, X_WINDOW_SUPPORT, WINDOW_SUPPORT): Remove.
2150 (lisp): Set the order to that of loadup.el.
2151 (shortlisp): Make it a copy of $lisp.
2152 (SOME_MACHINE_LISP): Remove.
2153 ($(etc)/DOC): Depend just on $lisp, not $SOME_MACHINE_LISP too.
2154 Use just $shortlisp, not $SOME_MACHINE_LISP too.
2155
2156 2011-05-18 Kenichi Handa <handa@m17n.org>
2157
2158 * composite.c (CHAR_COMPOSABLE_P): Add more check for efficiency.
2159 (BACKWARD_CHAR): Wrap the arg STOP by parenthesis.
2160 (find_automatic_composition): Mostly rewrite for efficiency.
2161
2162 2011-05-18 Juanma Barranquero <lekktu@gmail.com>
2163
2164 * makefile.w32-in: Update dependencies.
2165
2166 2011-05-18 Christoph Scholtes <cschol2112@googlemail.com>
2167
2168 * menu.c: Include limits.h (fixes the MS-Windows build broken by
2169 2011-06-18T18:49:19Z!cyd@stupidchicken.com).
2170
2171 2011-05-18 Paul Eggert <eggert@cs.ucla.edu>
2172
2173 Fix some integer overflow issues, such as string length overflow.
2174
2175 * insdel.c (count_size_as_multibyte): Check for string overflow.
2176
2177 * character.c (lisp_string_width): Check for string overflow.
2178 Use EMACS_INT, not int, for string indexes and lengths; in
2179 particular, 2nd arg is now EMACS_INT, not int. Do not crash if
2180 the resulting string length overflows an EMACS_INT; instead,
2181 report a string overflow if no precision given. When checking for
2182 precision exhaustion, use a check that cannot possibly have
2183 integer overflow. (Bug#8675)
2184 * character.h (lisp_string_width): Adjust to new signature.
2185
2186 * alloc.c (string_overflow): New function.
2187 (Fmake_string): Use it. This doesn't change behavior, but saves
2188 a few bytes and will simplify future changes.
2189 * character.c (string_escape_byte8): Likewise.
2190 * lisp.h (string_overflow): New decl.
2191
2192 Fixups, following up to the user-interface timestamp change.
2193 * nsterm.m (last_mouse_movement_time, ns_mouse_position): Use Time
2194 for UI timestamps, instead of unsigned long.
2195 * msdos.c (mouse_get_pos): Likewise.
2196 * w32inevt.c (movement_time, w32_console_mouse_position): Likewise.
2197 * w32gui.h (Time): Define by including "systime.h" rather than by
2198 declaring it ourselves. (Bug#8664)
2199
2200 * dispextern.h (struct image): Don't assume time_t <= unsigned long.
2201 * image.c (clear_image_cache): Likewise.
2202
2203 * term.c (term_mouse_position): Don't assume time_t wraparound.
2204
2205 Be more systematic about user-interface timestamps.
2206 Before, the code sometimes used 'Time', sometimes 'unsigned long',
2207 and sometimes 'EMACS_UINT', to represent these timestamps.
2208 This change causes it to use 'Time' uniformly, as that's what X uses.
2209 This makes the code easier to follow, and makes it easier to catch
2210 integer overflow bugs such as Bug#8664.
2211 * frame.c (Fmouse_position, Fmouse_pixel_position):
2212 Use Time, not unsigned long, for user-interface timestamps.
2213 * keyboard.c (last_event_timestamp, kbd_buffer_get_event): Likewise.
2214 (button_down_time, make_lispy_position, make_lispy_movement): Likewise.
2215 * keyboard.h (last_event_timestamp): Likewise.
2216 * menu.c (Fx_popup_menu) [!HAVE_X_WINDOWS]: Likewise.
2217 * menu.h (xmenu_show): Likewise.
2218 * term.c (term_mouse_position): Likewise.
2219 * termhooks.h (struct input_event.timestamp): Likewise.
2220 (struct terminal.mouse_position_hook): Likewise.
2221 * xmenu.c (create_and_show_popup_menu, xmenu_show): Likewise.
2222 * xterm.c (XTmouse_position, x_scroll_bar_report_motion): Likewise.
2223 * systime.h (Time): New decl. Pull it in from <X11/X.h> if
2224 HAVE_X_WINDOWS, otherwise define it as unsigned long, which is
2225 what it was before.
2226 * menu.h, termhooks.h: Include "systime.h", for Time.
2227
2228 * keyboard.c (make_lispy_event): Fix problem in integer overflow.
2229 Don't assume that the difference between two unsigned long values
2230 can fit into an integer. At this point, we know button_down_time
2231 <= event->timestamp, so the difference must be nonnegative, so
2232 there's no need to cast the result if double-click-time is
2233 nonnegative, as it should be; check that it's nonnegative, just in
2234 case. This bug is triggered when events are more than 2**31 ms
2235 apart (about 25 days). (Bug#8664)
2236
2237 * xselect.c (last_event_timestamp): Remove duplicate decl.
2238 (x_own_selection): Remove needless cast to unsigned long.
2239
2240 * xmenu.c (set_frame_menubar): Use int, not EMACS_UINT, for indexes
2241 that always fit in int. Use a sentinel instead of a counter, to
2242 avoid a temp and to allay GCC's concerns about possible int overflow.
2243 * frame.h (struct frame): Use int for menu_bar_items_used
2244 instead of EMACS_INT, since it always fits in int.
2245
2246 * menu.c (grow_menu_items): Check for int overflow.
2247
2248 * xmenu.c (set_frame_menubar): Don't mishandle vectors with no nils.
2249
2250 * xterm.c: Use EMACS_INT for Emacs modifiers, and int for X modifiers.
2251 Before, the code was not consistent. These values cannot exceed
2252 2**31 - 1 so there's no need to make them unsigned.
2253 (x_x_to_emacs_modifiers): Accept int and return EMACS_INT.
2254 (x_emacs_to_x_modifiers): Accept EMACS_INT and return int.
2255 (x_x_to_emacs_modifiers, x_emacs_to_x_modifiers): Reject non-integers
2256 as modifiers.
2257 * xterm.h (x_x_to_emacs_modifiers): Adjust to signature change.
2258
2259 * lisp.h (XINT) [USE_LISP_UNION_TYPE]: Cast to EMACS_INT.
2260 (XUINT) [USE_LISP_UNION_TYPE]: Cast to EMACS_UINT.
2261 Otherwise, GCC 4.6.0 warns about printf (pI, XINT (...)),
2262 presumably because the widths might not match.
2263
2264 * window.c (size_window): Avoid needless test at loop start.
2265
2266 2011-05-18 Courtney Bane <emacs-bugs-7626@cbane.org> (tiny change)
2267
2268 * term.c (Fresume_tty): Restore hooks before reinitializing (bug#8687).
2269
2270 2011-05-12 Drew Adams <drew.adams@oracle.com>
2271
2272 * textprop.c (Fprevious_single_char_property_change): Doc fix (bug#8655).
2273
2274 2011-05-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2275
2276 * w32term.c (w32_draw_fringe_bitmap): Rename local vars `left' and
2277 `width' to `bar_area_x' and `bar_area_width', respectively.
2278 (x_scroll_run): Take account of fringe background extension.
2279
2280 * xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]:
2281 Rename local vars `left' and `width' to `bar_area_x' and
2282 `bar_area_width', respectively.
2283 (x_scroll_run) [USE_TOOLKIT_SCROLL_BARS]: Take account of fringe
2284 background extension.
2285
2286 2011-05-10 Jim Meyering <meyering@redhat.com>
2287
2288 * xdisp.c (x_intersect_rectangles): Fix typo "the the -> the".
2289
2290 2011-05-10 Juanma Barranquero <lekktu@gmail.com>
2291
2292 * image.c (Finit_image_library): Return t for built-in image types,
2293 like pbm and xbm. (Bug#8640)
2294
2295 2011-05-09 Andreas Schwab <schwab@linux-m68k.org>
2296
2297 * w32menu.c (set_frame_menubar): Fix submenu allocation.
2298
2299 2011-05-07 Eli Zaretskii <eliz@gnu.org>
2300
2301 * w32console.c (Fset_screen_color): Doc fix.
2302 (Fget_screen_color): New function.
2303 (syms_of_ntterm): Defsubr it.
2304
2305 * callproc.c (call_process_cleanup) [MSDOS]: Don't close and
2306 unlink the temporary file if Fcall_process didn't create it in the
2307 first place.
2308 (Fcall_process) [MSDOS]: Don't create tempfile if stdout of the
2309 child process will be redirected to a file specified with `:file'.
2310 Don't try to re-open tempfile in that case, and set fd[0] to -1 as
2311 cue to call_process_cleanup not to close that handle.
2312
2313 2011-05-07 Ben Key <bkey76@gmail.com>
2314
2315 * makefile.w32-in: The bootstrap-temacs rule now makes use of
2316 one of two shell specific rules, either bootstrap-temacs-CMD or
2317 bootstrap-temacs-SH. The bootstrap-temacs-SH rule is identical
2318 to the previous implementation of the bootstrap-temacs rule.
2319 The bootstrap-temacs-CMD rule is similar to the previous
2320 implementation of the bootstrap-temacs rule except that it
2321 makes use of the ESC_CFLAGS variable instead of the CFLAGS
2322 variable.
2323
2324 These changes, along with some changes to nt/configure.bat,
2325 nt/gmake.defs, and nt/nmake.defs, are required to extend my
2326 earlier fix to add support for --cflags and --ldflags options
2327 that include quotes so that it works whether make uses cmd or
2328 sh as the shell.
2329
2330 2011-05-06 Michael Albinus <michael.albinus@gmx.de>
2331
2332 * dbusbind.c (QCdbus_type_unix_fd): Declare static.
2333 (xd_remove_watch): Don't check QCdbus_type_unix_fd for SYMBOLP, it
2334 is a constant.
2335 (Fdbus_init_bus, xd_read_queued_messages): Bus can be a symbol or
2336 a string. Handle both cases.
2337 (Fdbus_call_method_asynchronously, Fdbus_register_signal)
2338 (Fdbus_register_method): Use Qinvalid_function.
2339
2340 2011-05-06 Juanma Barranquero <lekktu@gmail.com>
2341
2342 * makefile.w32-in: Update dependencies.
2343 (LISP_H): Add inttypes.h and stdin.h.
2344 (PROCESS_H): Add unistd.h.
2345
2346 2011-05-06 Eli Zaretskii <eliz@gnu.org>
2347
2348 * lread.c: Include limits.h (fixes the MS-Windows build broken by
2349 2011-05-06T07:13:19Z!eggert@cs.ucla.edu).
2350
2351 2011-05-06 Paul Eggert <eggert@cs.ucla.edu>
2352
2353 * image.c (Finit_image_library) [!HAVE_NTGUI]: Omit unused local.
2354
2355 * term.c (vfatal): Remove stray call to va_end.
2356 It's not needed and the C Standard doesn't allow it here anyway.
2357
2358 Use C99's va_copy to avoid undefined behavior on x86-64 GNU/Linux.
2359 * eval.c (verror): doprnt a copy of ap, not the original. (Bug#8545)
2360
2361 * eval.c (verror): OK to create a string of up to MOST_POSITIVE_FIXNUM
2362 bytes.
2363
2364 * term.c: Don't include <stdarg.h>, as <lisp.h> does that.
2365
2366 * callproc.c (Fcall_process): Use 'volatile' to avoid vfork clobbering.
2367
2368 * process.c (Fformat_network_address): Fix typo: args2 -> *args2.
2369
2370 * xmenu.c (set_frame_menubar): Fix typo: int * -> int (3 times).
2371
2372 * coding.c (detect_coding_charset): Fix typo: * 2 -> *4 (Bug#8601).
2373
2374 * charset.h (struct charset.code_space): Now has 15 elements, not 16.
2375 * charset.c (Fdefine_charset_internal): Don't initialize
2376 charset.code_space[15]. The value was garbage, on hosts with
2377 32-bit int (Bug#8600).
2378
2379 * lread.c (read_integer): Be more consistent with string-to-number.
2380 Use string_to_number to do the actual conversion; this avoids
2381 rounding errors and fixes some other screwups. Without this fix,
2382 for example, #x1fffffffffffffff was misread as -2305843009213693952.
2383 (digit_to_number): Move earlier, for benefit of read_integer.
2384 Return -1 if the digit is out of range for the base, -2 if it is
2385 not a digit in any supported base. (Bug#8602)
2386
2387 * doprnt.c (doprnt): Support arbitrary pI values, such as "I64".
2388
2389 * dispnew.c (scrolling_window): Return 1 if we scrolled,
2390 to match comment at start of function. This also removes a
2391 GCC warning about overflow in a 32+64-bit port.
2392
2393 * lisp.h (EMACS_INT, EMACS_UINT, BITS_PER_EMACS_INT, pI): Simplify.
2394
2395 * dbusbind.c: Do not use XPNTR on a value that may be an integer.
2396 Reported by Stefan Monnier in
2397 <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00919.html>.
2398 (xd_remove_watch, Fdbus_init_bus, xd_read_queued_messages):
2399 Use SYMBOLP-guarded XSYMBOL, not XPNTR.
2400
2401 * lisp.h (EMACS_INTPTR): Remove. All uses changed to intptr_t.
2402 (EMACS_UINTPTR): Likewise, with uintptr_t.
2403
2404 * lisp.h: Prefer 64-bit EMACS_INT if available.
2405 (EMACS_INT, EMACS_UINT, BITS_PER_EMACS_INT, pI): Define to 64-bit
2406 on 32-bit hosts that have 64-bit int, so that they can access
2407 large files.
2408 However, temporarily disable this change unless the temporary
2409 symbol WIDE_EMACS_INT is defined.
2410
2411 * lread.c, process.c: Do not include <inttypes.h>; lisp.h does it now.
2412
2413 Prefer intptr_t/uintptr_t for integers the same widths as pointers.
2414 This removes an assumption that EMACS_INT and long are the same
2415 width as pointers. The assumption is true for Emacs porting targets
2416 now, but we want to make other targets possible.
2417 * lisp.h: Include <inttypes.h>, for INTPTR_MAX, UINTPTR_MAX.
2418 (EMACS_INTPTR, EMACS_UINTPTR): New macros.
2419 In the rest of the code, change types of integers that hold casted
2420 pointers to EMACS_INTPTR and EMACS_UINTPTR, systematically
2421 replacing EMACS_INT, long, EMACS_UINT, and unsigned long.
2422 (XTYPE): Don't cast arg to EMACS_UINT; normally is not needed.
2423 (XSET): Cast type of XTYPE arg to EMACS_INTPTR; it is needed here.
2424 No need to cast type when ORing.
2425 (XPNTR): Return a value of type EMACS_INTPTR or EMACS_UINTPTR.
2426 * alloc.c (lisp_align_malloc): Remove a no-longer-needed cast.
2427 * doc.c (store_function_docstring): Use EMACS_INTPTR, so as not to
2428 assume EMACS_INT is the same width as char *.
2429 * gtkutil.c (xg_gtk_scroll_destroy, xg_tool_bar_button_cb):
2430 (xg_tool_bar_callback, xg_tool_bar_help_callback, xg_make_tool_item):
2431 Remove no-longer-needed casts.
2432 (xg_create_scroll_bar, xg_tool_bar_button_cb, xg_tool_bar_callback):
2433 (xg_tool_bar_help_callback, xg_make_tool_item):
2434 Use EMACS_INTPTR to hold an integer
2435 that will be cast to void *; this can avoid a GCC warning
2436 if EMACS_INT is not the same width as void *.
2437 * menu.c (find_and_call_menu_selection): Remove no-longer-needed cast.
2438 * xdisp.c (display_echo_area_1, resize_mini_window_1):
2439 (current_message_1, set_message_1):
2440 Use a local to convert to proper width without a cast.
2441 * xmenu.c (dialog_selection_callback): Likewise.
2442
2443 * sysdep.c (get_random): Don't assume EMACS_INT is no wider than long.
2444 Also, don't assume VALBITS / RAND_BITS is less than 5,
2445 and don't rely on undefined behavior when shifting a 1 left into
2446 the sign bit.
2447 * lisp.h (get_random): Change signature to match.
2448
2449 * lread.c (hash_string): Use size_t, not int, for hash computation.
2450 Normally we prefer signed values; but hashing is special, because
2451 it's better to use unsigned division on hash table sizes so that
2452 the remainder is nonnegative. Also, size_t is the natural width
2453 for hashing into memory. The previous code used 'int', which doesn't
2454 retain enough info to hash well into very large tables.
2455 (oblookup, oblookup_last_bucket_number, Funintern): Likewise.
2456
2457 * dbusbind.c: Don't possibly lose pointer info when converting.
2458 (xd_remove_watch, Fdbus_init_bus, xd_read_queued_messages):
2459 Use XPNTR rather than XHASH, so that the high-order bits of
2460 the pointer aren't lost when converting through void *.
2461
2462 * eval.c (Fautoload): Don't double-shift a pointer.
2463
2464 * fns.c (Frandom): Let EMACS_UINT be wider than unsigned long.
2465
2466 2011-05-06 Juanma Barranquero <lekktu@gmail.com>
2467
2468 * gnutls.c (DEF_GNUTLS_FN):
2469 * image.c (DEF_IMGLIB_FN): Make function pointers static.
2470
2471 2011-05-05 Andreas Schwab <schwab@linux-m68k.org>
2472
2473 * lread.c (lisp_file_lexically_bound_p): Stop scanning at end
2474 marker. (Bug#8610)
2475
2476 2011-05-05 Eli Zaretskii <eliz@gnu.org>
2477
2478 * w32heap.c (allocate_heap) [USE_LISP_UNION_TYPE || USE_LSB_TAG]:
2479 New version that can reserve upto 2GB of heap space.
2480
2481 2011-05-05 Chong Yidong <cyd@stupidchicken.com>
2482
2483 * nsfns.m (Fns_read_file_name): Doc fix (Bug#8534).
2484
2485 2011-05-05 Teodor Zlatanov <tzz@lifelogs.com>
2486
2487 * gnutls.c (fn_gnutls_certificate_set_x509_key_file): Add alias to
2488 `gnutls_certificate_set_x509_key_file'.
2489
2490 2011-05-05 Juanma Barranquero <lekktu@gmail.com>
2491
2492 * makefile.w32-in ($(BLD)/image.$(O), $(BLD)/process.$(O)):
2493 Update dependencies.
2494
2495 2011-05-04 Juanma Barranquero <lekktu@gmail.com>
2496
2497 * gnutls.h (emacs_gnutls_write, emacs_gnutls_read):
2498 * gnutls.c (emacs_gnutls_write, emacs_gnutls_read):
2499 Remove unused parameter `fildes'.
2500 * process.c (read_process_output, send_process): Don't pass it.
2501
2502 2011-05-04 Juanma Barranquero <lekktu@gmail.com>
2503
2504 Fix previous change: the library cache is defined in w32.c.
2505 * image.c (CACHE_IMAGE_TYPE) [!HAVE_NTGUI]: Define to noop.
2506 (Finit_image_library): Wrap Vlibrary_cache on "#ifdef HAVE_NTGUI".
2507
2508 2011-05-04 Juanma Barranquero <lekktu@gmail.com>
2509
2510 Implement dynamic loading of GnuTLS on Windows.
2511
2512 * gnutls.h (GNUTLS_EMACS_ERROR_NOT_LOADED): New macro.
2513 (emacs_gnutls_write, emacs_gnutls_read): Mark as extern.
2514 (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno):
2515 Declare.
2516
2517 * gnutls.c (Qgnutls_dll): Define.
2518 (DEF_GNUTLS_FN, LOAD_GNUTLS_FN): New macros.
2519 (gnutls_*): Declare function pointers.
2520 (init_gnutls_functions): New function to initialize function pointers.
2521 (emacs_gnutls_handshake, Fgnutls_error_string, Fgnutls_deinit)
2522 (emacs_gnutls_global_init, Fgnutls_bye): Use function pointers.
2523 (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno):
2524 Wrappers for gnutls_record_check_pending and gnutls_transport_set_errno.
2525 (emacs_gnutls_write, emacs_gnutls_read)
2526 (emacs_gnutls_handle_error, Fgnutls_error_fatalp)
2527 (Fgnutls_available_p): New function.
2528 (Fgnutls_boot): Call Fgnutls_available_p. Use function pointers.
2529 (syms_of_gnutls) <Qgnutls_dll>: Initialize and staticpro it.
2530 (syms_of_gnutls) <Sgnutls_available_p>: defsubr it.
2531
2532 * image.c: Include w32.h.
2533 (Vimage_type_cache): Delete.
2534 (syms_of_image) <Vimage_type_cache>: Don't initialize and staticpro it.
2535 (CACHE_IMAGE_TYPE, Finit_image_library): Use Vlibrary_cache instead.
2536 (w32_delayed_load): Move to w32.c.
2537
2538 * w32.h (VlibraryCache, QCloaded_from, w32_delayed_load): Declare.
2539
2540 * w32.c (QCloaded_from, Vlibrary_cache): Define.
2541 (w32_delayed_load): Move from image.c. When loading a library, record
2542 its filename in the :loaded-from property of the library id.
2543 (globals_of_w32) <QCloaded_from, Vlibrary_cache>:
2544 Initialize and staticpro them.
2545 (emacs_gnutls_pull, emacs_gnutls_push): Call emacs_gnutls_* functions.
2546
2547 * process.c: Include lisp.h before w32.h, not after.
2548 (wait_reading_process_output): Call emacs_gnutls_record_check_pending
2549 instead of gnutls_record_check_pending.
2550
2551 * callproc.c, emacs.c: Include lisp.h before w32.h, not after.
2552
2553 2011-05-04 Teodor Zlatanov <tzz@lifelogs.com>
2554
2555 * gnutls.c (Fgnutls_boot): Support :keylist and :crlfiles options
2556 instead of :keyfiles. Give GnuTLS the keylist and the CRL lists
2557 as passed in.
2558
2559 2011-05-03 Jan Djärv <jan.h.d@swipnet.se>
2560
2561 * xterm.c (x_set_frame_alpha): Do not set property on anything
2562 else than FRAME_X_OUTER_WINDOW (Bug#8608).
2563
2564 2011-05-02 Juanma Barranquero <lekktu@gmail.com>
2565
2566 * sysdep.c (get_tty_size) [WINDOWSNT]: Implement. (Bug#8596)
2567
2568 2011-05-02 Juanma Barranquero <lekktu@gmail.com>
2569
2570 * gnutls.c (Qgnutls_log_level, Qgnutls_code, Qgnutls_anon)
2571 (Qgnutls_x509pki, Qgnutls_e_interrupted, Qgnutls_e_again)
2572 (Qgnutls_e_invalid_session, Qgnutls_e_not_ready_for_handshake)
2573 (gnutls_global_initialized, Qgnutls_bootprop_priority)
2574 (Qgnutls_bootprop_trustfiles, Qgnutls_bootprop_keyfiles)
2575 (Qgnutls_bootprop_callbacks, Qgnutls_bootprop_loglevel)
2576 (Qgnutls_bootprop_hostname, Qgnutls_bootprop_verify_flags)
2577 (Qgnutls_bootprop_verify_error, Qgnutls_bootprop_verify_hostname_error)
2578 (Qgnutls_bootprop_callbacks_verify): Make static.
2579
2580 2011-05-01 Andreas Schwab <schwab@linux-m68k.org>
2581
2582 * callproc.c: Indentation fixup.
2583
2584 * sysdep.c (wait_for_termination_1): Make static.
2585 (wait_for_termination, interruptible_wait_for_termination):
2586 Move after wait_for_termination_1.
2587
2588 2011-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
2589
2590 * sysdep.c (interruptible_wait_for_termination): New function
2591 which is like wait_for_termination, but allows keyboard
2592 interruptions.
2593
2594 * callproc.c (Fcall_process): Add (:file "file") as an option for
2595 the STDOUT buffer.
2596 (Fcall_process_region): Ditto.
2597
2598 2011-04-30 Eli Zaretskii <eliz@gnu.org>
2599
2600 * dosfns.c (Fint86, Fdos_memget, Fdos_memput): Use `ASIZE (FOO)'
2601 rather than `XVECTOR (FOO)->size'.
2602
2603 * process.c: Remove HAVE_INTTYPES_H condition from inclusion of
2604 inttypes.h, as a gnulib replacement is used if it not available in
2605 system headers.
2606
2607 2011-04-21 Eli Zaretskii <eliz@gnu.org>
2608
2609 Lift the MOST_POSITIVE_FIXNUM/4 limitation on visited files.
2610 * fileio.c (Finsert_file_contents): Don't limit file size to 1/4
2611 of MOST_POSITIVE_FIXNUM. (Bug#8528)
2612
2613 * coding.c (coding_alloc_by_realloc): Error out if destination
2614 will grow beyond MOST_POSITIVE_FIXNUM.
2615 (decode_coding_emacs_mule): Abort if there isn't enough place in
2616 charbuf for the composition carryover bytes. Reserve an extra
2617 space for up to 2 characters produced in a loop.
2618 (decode_coding_iso_2022): Abort if there isn't enough place in
2619 charbuf for the composition carryover bytes.
2620
2621 2011-04-21 Eli Zaretskii <eliz@gnu.org>
2622
2623 * doprnt.c (doprnt) [!HAVE_LONG_LONG_INT]: Error out instead of
2624 aborting when %lld or %lll format is passed.
2625 [!HAVE_UNSIGNED_LONG_LONG_INT]: Error out instead of aborting when
2626 %llo or %llx format is passed. (Bug#8545)
2627
2628 * window.c (window_scroll_line_based): Use a marker instead of
2629 simple variables to record original value of point. (Bug#7952)
2630
2631 * doprnt.c (doprnt): Fix the case where a multibyte sequence
2632 produced by %s or %c overflows available buffer space. (Bug#8545)
2633
2634 2011-04-28 Paul Eggert <eggert@cs.ucla.edu>
2635
2636 * doprnt.c (doprnt): Omit useless test; int overflow check (Bug#8545).
2637 (SIZE_MAX): Move defn after all includes, as they might #define it.
2638
2639 2011-04-28 Juanma Barranquero <lekktu@gmail.com>
2640
2641 * w32.c (init_environment): Warn about defaulting HOME to C:\.
2642
2643 2011-04-28 Juanma Barranquero <lekktu@gmail.com>
2644
2645 * keyboard.c (Qdelayed_warnings_hook): Define.
2646 (command_loop_1): Run `delayed-warnings-hook'
2647 if Vdelayed_warnings_list is non-nil.
2648 (syms_of_keyboard) <delayed-warnings-hook>: DEFSYM it.
2649 (syms_of_keyboard) <delayed-warnings-list>: DEFVAR_LISP it.
2650
2651 2011-04-28 Eli Zaretskii <eliz@gnu.org>
2652
2653 * doprnt.c (doprnt): Don't return value smaller than the buffer
2654 size if the message was truncated. (Bug#8545).
2655
2656 2011-04-28 Juanma Barranquero <lekktu@gmail.com>
2657
2658 * w32fns.c (Fx_change_window_property, Fx_delete_window_property)
2659 (Fx_window_property): #if-0 the whole functions, not just the bodies.
2660
2661 2011-04-27 Paul Eggert <eggert@cs.ucla.edu>
2662
2663 * doprnt.c (doprnt): Support "ll" length modifier, for long long.
2664
2665 2011-04-27 Juanma Barranquero <lekktu@gmail.com>
2666
2667 * makefile.w32-in: Update dependencies.
2668
2669 2011-04-27 Eli Zaretskii <eliz@gnu.org>
2670
2671 Improve `doprnt' and its usage. (Bug#8545)
2672 * doprnt.c (doprnt): Make sure `format' is never accessed beyond
2673 `format_end'. Remove support for %l as a conversion specifier.
2674 Don't use xrealloc. Improve diagnostics when the %l size modifier
2675 is used. Update the commentary.
2676
2677 * eval.c (verror): Simplify calculation of size_t.
2678
2679 * coding.c (Ffind_operation_coding_system): Fix diagnostic error
2680 messages.
2681
2682 2011-04-27 Yoshiaki Kasahara <kasahara@nc.kyushu-u.ac.jp> (tiny change)
2683
2684 * buffer.c (init_buffer) [USE_MMAP_FOR_BUFFERS]: Adjust to aliasing
2685 change.
2686
2687 2011-04-27 Paul Eggert <eggert@cs.ucla.edu>
2688
2689 * nsmenu.m: Replace all uses of XVECTOR with ASIZE and AREF.
2690 This makes this file independent of the recent pseudovector change.
2691
2692 2011-04-26 Paul Eggert <eggert@cs.ucla.edu>
2693
2694 * keyboard.c (handle_user_signal): Fix pointer signedness problem.
2695
2696 * gnutls.c (emacs_gnutls_handle_error): Remove unused local.
2697 (Fgnutls_boot): gnutls_certificate_verify_peers2 wants unsigned *.
2698 Remove unused local.
2699 (emacs_gnutls_write): Don't use uninitialized rtnval if nbyte <= 0.
2700
2701 * lisp.h: Fix a problem with aliasing and vector headers. (Bug#8546)
2702 GCC 4.6.0 optimizes based on type-based alias analysis.
2703 For example, if b is of type struct buffer * and v of type struct
2704 Lisp_Vector *, then gcc -O2 was incorrectly assuming that &b->size
2705 != &v->size, and therefore "v->size = 1; b->size = 2; return
2706 v->size;" must therefore return 1. This assumption is incorrect
2707 for Emacs, since it type-puns struct Lisp_Vector * with many other
2708 types. To fix this problem, this patch adds a new type struct
2709 vectorlike_header that documents the constraints on layout of vectors
2710 and pseudovectors, and helps optimizing compilers not get fooled
2711 by Emacs's type punning. It also adds the macros XSETTYPED_PVECTYPE
2712 XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
2713 * lisp.h (XSETTYPED_PVECTYPE): New macro, specifying the name of
2714 the size member.
2715 (XSETPVECTYPE): Rewrite in terms of new macro.
2716 (XSETPVECTYPESIZE): New macro, specifying both type and size.
2717 This is a bit clearer, and further avoids the possibility of
2718 undesirable aliasing.
2719 (XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
2720 (XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR.
2721 (XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
2722 since Lisp_Subr is a special case (no "next" field).
2723 (ASIZE): Now uses header.size rather than size.
2724 All previous uses of XVECTOR (foo)->size replaced to use this macro,
2725 to avoid the hassle of writing XVECTOR (foo)->header.size.
2726 (struct vectorlike_header): New type.
2727 (TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
2728 object, to help avoid aliasing.
2729 (PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
2730 (SUBRP): Likewise, since Lisp_Subr is a special case.
2731 * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
2732 (struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
2733 (struct Lisp_Hash_Table): Combine first two members into a single
2734 struct vectorlike_header member. All uses of "size" and "next" members
2735 changed to be "header.size" and "header.next".
2736 * buffer.h (struct buffer): Likewise.
2737 * font.h (struct font_spec, struct font_entity, struct font): Likewise.
2738 * frame.h (struct frame): Likewise.
2739 * process.h (struct Lisp_Process): Likewise.
2740 * termhooks.h (struct terminal): Likewise.
2741 * window.c (struct save_window_data, struct saved_window): Likewise.
2742 * window.h (struct window): Likewise.
2743 * alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
2744 Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
2745 * buffer.c (init_buffer_once): Likewise.
2746 * lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
2747 special case.
2748 * process.c (Fformat_network_address): Use local var for size,
2749 for brevity.
2750
2751 * bytecode.c (exec_byte_code): Don't use XVECTOR before CHECK_VECTOR.
2752
2753 Make the Lisp reader and string-to-float more consistent (Bug#8525)
2754 * data.c (atof): Remove decl; no longer used or needed.
2755 (digit_to_number): Move to lread.c.
2756 (Fstring_to_number): Use new string_to_number function, to be
2757 consistent with how the Lisp reader treats infinities and NaNs.
2758 Do not assume that floating-point numbers represent EMACS_INT
2759 without losing information; this is not true on most 64-bit hosts.
2760 Avoid double-rounding errors, by insisting on integers when
2761 parsing non-base-10 numbers, as the documentation specifies.
2762 * lisp.h (string_to_number): New decl, replacing ...
2763 (isfloat_string): Remove.
2764 * lread.c: Include <inttypes.h>, for uintmax_t and strtoumax.
2765 (read1): Do not accept +. and -. as integers; this
2766 appears to have been a coding error. Similarly, do not accept
2767 strings like +-1e0 as floating point numbers. Do not report
2768 overflow for integer overflows unless the base is not 10 which
2769 means we have no simple and reliable way to continue.
2770 Break out the floating-point parsing into a new
2771 function string_to_number, so that Fstring_to_number parses
2772 floating point numbers consistently with the Lisp reader.
2773 (digit_to_number): Move here from data.c. Make it static inline.
2774 (E_CHAR, EXP_INT): Remove, replacing with ...
2775 (E_EXP): New macro, to solve the "1.0e+" problem mentioned below.
2776 (string_to_number): New function, replacing isfloat_string.
2777 This function checks for valid syntax and produces the resulting
2778 Lisp float number too. Rework it so that string-to-number
2779 no longer mishandles examples like "1.0e+". Use strtoumax,
2780 so that overflow for non-base-10 numbers is reported only when
2781 there's no portable and simple way to convert to floating point.
2782
2783 * textprop.c (set_text_properties_1): Rewrite for clarity,
2784 and to avoid GCC warning about integer overflow.
2785
2786 * intervals.h (struct interval): Use EMACS_INT for members
2787 where EMACS_UINT might cause problems. See
2788 <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00514.html>.
2789 (CHECK_TOTAL_LENGTH): Remove cast to EMACS_INT; no longer needed.
2790 * intervals.c (interval_deletion_adjustment): Now returns EMACS_INT.
2791 All uses changed.
2792 (offset_intervals): Tell GCC not to worry about length overflow
2793 when negating a negative length.
2794
2795 * alloc.c (overrun_check_malloc, overrun_check_realloc): Now static.
2796 (overrun_check_free): Likewise.
2797
2798 * alloc.c (SDATA_SIZE) [!GC_CHECK_STRING_BYTES]: Avoid runtime check
2799 in the common case where SDATA_DATA_OFFSET is a multiple of Emacs
2800 word size.
2801
2802 * gnutls.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10.
2803 (gnutls_make_error): Rename local to avoid shadowing.
2804 (gnutls_emacs_global_deinit): ifdef out; not used.
2805 (Fgnutls_boot): Use const for pointer to readonly storage.
2806 Comment out unused local. Fix pointer signedness problems.
2807
2808 * lread.c (openp): Don't stuff size_t into an 'int'.
2809 Use <= on length, not < on length + 1, to avoid GCC 4.6.0 warning
2810 about possible signed overflow.
2811
2812 * gtkutil.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10.
2813 (GDK_KEY_g): Don't define if already defined.
2814 (xg_prepare_tooltip): Avoid pointer signedness problem.
2815 (xg_set_toolkit_scroll_bar_thumb): Redo to avoid two casts.
2816
2817 * process.c (Fnetwork_interface_info): Avoid left-shift undefined
2818 behavior with 1 << 31. GCC 4.6.0 warns about this on 32-bit hosts.
2819
2820 * xfns.c (Fx_window_property): Simplify a bit,
2821 to make a bit faster and to avoid GCC 4.6.0 warning.
2822 * xselect.c (x_get_window_property, x_handle_dnd_message): Likewise.
2823
2824 * fns.c (internal_equal): Don't assume size_t fits in int.
2825
2826 * alloc.c (compact_small_strings): Tighten assertion a little.
2827
2828 Replace pEd with more-general pI, and fix some printf arg casts.
2829 * lisp.h (pI): New macro, generalizing old pEd macro to other
2830 conversion specifiers. For example, use "...%"pI"d..." rather
2831 than "...%"pEd"...".
2832 (pEd): Remove. All uses replaced with similar uses of pI.
2833 * src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h: Likewise.
2834 * alloc.c (check_pure_size): Don't overflow by converting size to int.
2835 * bidi.c (bidi_dump_cached_states): Use pI to avoid cast.
2836 * data.c (Fnumber_to_string): Use pI instead of if-then-else-abort.
2837 * dbusbind.c (xd_append_arg): Use pI to avoid cast.
2838 (Fdbus_method_return_internal, Fdbus_method_error_internal): Likewise.
2839 * font.c (font_unparse_xlfd): Avoid potential buffer overrun on
2840 64-bit hosts.
2841 (font_unparse_xlfd, font_unparse_fcname): Use pI to avoid casts.
2842 * keyboard.c (record_char, modify_event_symbol): Use pI to avoid casts.
2843 * print.c (safe_debug_print, print_object): Likewise.
2844 (print_object): Don't overflow by converting EMACS_INT or EMACS_UINT
2845 to int.
2846 Use pI instead of if-then-else-abort. Use %p to avoid casts,
2847 avoiding the 0 flag, which is not portable.
2848 * process.c (Fmake_network_process): Use pI to avoid cast.
2849 * region-cache.c (pp_cache): Likewise.
2850 * xdisp.c (decode_mode_spec): Likewise.
2851 * xrdb.c (x_load_resources) [USE_MOTIF]: Use pI to avoid undefined
2852 behavior on 64-bit hosts with printf arg.
2853 * xselect.c (x_queue_event): Use %p to avoid casts, avoiding 0 flag.
2854 (x_stop_queuing_selection_requests): Likewise.
2855 (x_get_window_property): Don't truncate byte count to an 'int'
2856 when tracing.
2857
2858 * frame.c (frame_name_fnn_p): Get rid of strtol, which isn't right
2859 here, since it parses constructs like leading '-' and spaces,
2860 which are not wanted; and it overflows with large numbers.
2861 Instead, simply match F[0-9]+, which is what is wanted anyway.
2862
2863 * alloc.c: Remove unportable assumptions about struct layout.
2864 (SDATA_SELECTOR, SDATA_DATA_OFFSET): New macros.
2865 (SDATA_OF_STRING, SDATA_SIZE, allocate_string_data):
2866 (allocate_vectorlike, make_pure_vector): Use the new macros,
2867 plus offsetof, to remove unportable assumptions about struct layout.
2868 These assumptions hold on all porting targets that I know of, but
2869 they are not guaranteed, they're easy to remove, and removing them
2870 makes further changes easier.
2871
2872 * alloc.c (BLOCK BYTES): Fix typo by changing "ablock" to "ablocks".
2873 This doesn't fix a bug but makes the code clearer.
2874 (string_overrun_cookie): Now const. Use initializers that
2875 don't formally overflow signed char, to avoid warnings.
2876 (allocate_string_data) [GC_CHECK_STRING_OVERRUN]: Fix typo that
2877 can cause Emacs to crash when string overrun checking is enabled.
2878 (allocate_buffer): Don't assume sizeof (struct buffer) is a
2879 multiple of sizeof (EMACS_INT); it need not be, if
2880 alignof(EMACS_INT) < sizeof (EMACS_INT).
2881 (check_sblock, check_string_bytes, check_string_free_list): Protoize.
2882
2883 2011-04-26 Juanma Barranquero <lekktu@gmail.com>
2884
2885 * keyboard.c (QCrtl): Rename from Qrtl. All uses changed.
2886
2887 2011-04-26 Teodor Zlatanov <tzz@lifelogs.com>
2888
2889 * gnutls.c (emacs_gnutls_handshake): Return an error if we're not
2890 supposed to be handshaking. (Bug#8556)
2891 Reported by Paul Eggert <eggert@cs.ucla.edu>.
2892
2893 2011-04-26 Daniel Colascione <dan.colascione@gmail.com>
2894
2895 * lisp.h (Qdebug): List symbol.
2896 * eval.c (Qdebug): Restore global linkage.
2897 * keyboard.c (debug-on-event): New variable.
2898 (handle_user_signal): Break into debugger when debug-on-event
2899 matches the current signal symbol.
2900
2901 2011-04-25 Dan Nicolaescu <dann@ics.uci.edu>
2902
2903 * alloc.c (check_sblock, check_string_bytes)
2904 (check_string_free_list): Convert to standard C.
2905
2906 2011-04-25 Teodor Zlatanov <tzz@lifelogs.com>
2907
2908 * w32.c (emacs_gnutls_push): Fix typo.
2909
2910 2011-04-25 Eli Zaretskii <eliz@gnu.org>
2911
2912 * gnutls.c (emacs_gnutls_handshake): Avoid compiler warnings about
2913 "cast to pointer from integer of different size".
2914
2915 Improve doprnt and its use in verror. (Bug#8545)
2916 * doprnt.c (doprnt): Document the set of format control sequences
2917 supported by the function. Use SAFE_ALLOCA instead of always
2918 using `alloca'.
2919
2920 * eval.c (verror): Don't limit the buffer size at size_max-1, that
2921 is one byte too soon. Don't use xrealloc; instead xfree and
2922 xmalloc anew.
2923
2924 2011-04-24 Teodor Zlatanov <tzz@lifelogs.com>
2925
2926 * gnutls.h: Add GNUTLS_STAGE_CALLBACKS enum to denote we're in the
2927 callbacks stage.
2928
2929 * gnutls.c: Renamed global_initialized to
2930 gnutls_global_initialized. Added internals for the
2931 :verify-hostname-error, :verify-error, and :verify-flags
2932 parameters of `gnutls-boot' and documented those parameters in the
2933 docstring. Start callback support.
2934 (emacs_gnutls_handshake): Add Woe32 support. Retry handshake
2935 unless a fatal error occurred. Call gnutls_alert_send_appropriate
2936 on error. Return error code.
2937 (emacs_gnutls_write): Call emacs_gnutls_handle_error.
2938 (emacs_gnutls_read): Likewise.
2939 (Fgnutls_boot): Return handshake error code.
2940 (emacs_gnutls_handle_error): New function.
2941 (wsaerror_to_errno): Likewise.
2942
2943 * w32.h (emacs_gnutls_pull): Add prototype.
2944 (emacs_gnutls_push): Likewise.
2945
2946 * w32.c (emacs_gnutls_pull): New function for GnuTLS on Woe32.
2947 (emacs_gnutls_push): Likewise.
2948
2949 2011-04-24 Claudio Bley <claudio.bley@gmail.com> (tiny change)
2950
2951 * process.c (wait_reading_process_output): Check if GnuTLS
2952 buffered some data internally if no FDs are set for TLS
2953 connections.
2954
2955 * makefile.w32-in (OBJ2): Add gnutls.$(O).
2956 (LIBS): Link to USER_LIBS.
2957 ($(BLD)/gnutls.$(0)): New target.
2958
2959 2011-04-24 Eli Zaretskii <eliz@gnu.org>
2960
2961 * xdisp.c (handle_single_display_spec): Rename the
2962 display_replaced_before_p argument into display_replaced_p, to
2963 make it consistent with the commentary. Fix typos in the
2964 commentary.
2965
2966 * textprop.c (syms_of_textprop): Remove dead code.
2967 (copy_text_properties): Delete obsolete commentary about an
2968 interface that was deleted long ago. Fix typos in the description
2969 of arguments.
2970
2971 * msdos.c (XMenuActivate, XMenuAddSelection): Adjust argument list
2972 to changes in oldXMenu/XMenu.h from 2011-04-16.
2973 <menu_help_message, prev_menu_help_message>: Constify.
2974 (IT_menu_make_room): menu->help_text is now `const char **';
2975 adjust.
2976
2977 * msdos.h (XMenuActivate, XMenuAddSelection): Adjust prototypes
2978 to changes in oldXMenu/XMenu.h from 2011-04-16.
2979 (struct XMenu): Declare `help_text' `const char **'.
2980
2981 * xfaces.c <Qunspecified>: Make extern again.
2982
2983 * syntax.c: Include sys/types.h before including regex.h, as
2984 required by Posix.
2985
2986 * doc.c (get_doc_string): Improve the format passed to `error'.
2987
2988 * doprnt.c (doprnt): Improve commentary.
2989
2990 * term.c (init_tty) [MSDOS]: Fix 1st argument to maybe_fatal.
2991
2992 * Makefile.in (TAGS): Depend on $(M_FILE) and $(S_FILE), and scan
2993 them with etags.
2994
2995 * makefile.w32-in (globals.h): Add a dummy recipe, to make any
2996 changes in globals.h immediately force recompilation.
2997 (TAGS): Depend on $(CURDIR)/m/intel386.h and
2998 $(CURDIR)/s/ms-w32.h.
2999 (TAGS-gmake): Scan $(CURDIR)/m/intel386.h and $(CURDIR)/s/ms-w32.h.
3000
3001 * character.c (Fchar_direction): Function deleted.
3002 (syms_of_character): Don't defsubr it.
3003 <char-direction-table>: Deleted.
3004
3005 2011-04-23 Eli Zaretskii <eliz@gnu.org>
3006
3007 Fix doprnt so it could be used again safely in `verror'. (Bug#8435)
3008 * doprnt.c: Include limits.h.
3009 (SIZE_MAX): New macro.
3010 (doprnt): Return a size_t value. 2nd arg is now size_t.
3011 Many local variables are now size_t instead of int or unsigned.
3012 Improve overflow protection. Support `l' modifier for integer
3013 conversions. Support %l conversion. Don't assume an EMACS_INT
3014 argument for integer conversions and for %c.
3015
3016 * lisp.h (doprnt): Restore prototype.
3017
3018 * makefile.w32-in ($(BLD)/callint.$(O)): Depend on
3019 $(SRC)/character.h.
3020
3021 * Makefile.in (base_obj): Add back doprnt.o.
3022
3023 * deps.mk (doprnt.o): Add back prerequisites.
3024 (callint.o): Depend on character.h.
3025
3026 * eval.c (internal_lisp_condition_case): Include the handler
3027 representation in the error message.
3028 (verror): Call doprnt instead of vsnprintf. Fix an off-by-one bug
3029 when breaking from the loop.
3030
3031 * xdisp.c (vmessage): Call doprnt instead of vsnprintf.
3032
3033 * callint.c (Fcall_interactively): When displaying error message
3034 about invalid control letter, pass the character's codepoint, not
3035 a pointer to its multibyte form. Improve display of the character
3036 in octal and display also its hex code.
3037
3038 * character.c (char_string): Use %x to display the (unsigned)
3039 codepoint of an invalid character, to avoid displaying a bogus
3040 negative value.
3041
3042 * font.c (check_otf_features): Pass SDATA of SYMBOL_NAME to
3043 `error', not SYMBOL_NAME itself.
3044
3045 * coding.c (Fencode_sjis_char, Fencode_big5_char): Use %c for
3046 character arguments to `error'.
3047
3048 * charset.c (check_iso_charset_parameter): Fix incorrect argument
3049 to `error' in error message about FINAL_CHAR argument. Make sure
3050 FINAL_CHAR is a character, and use %c when it is passed as
3051 argument to `error'.
3052
3053 2011-04-23 Eli Zaretskii <eliz@gnu.org>
3054
3055 * s/ms-w32.h (localtime): Redirect to sys_localtime.
3056
3057 * w32.c: Include <time.h>.
3058 (sys_localtime): New function.
3059
3060 2011-04-23 Chong Yidong <cyd@stupidchicken.com>
3061
3062 * xdisp.c (init_xdisp): Initialize echo_area_window (Bug#6451).
3063
3064 * buffer.c (syms_of_buffer): Doc fix (Bug#6902).
3065
3066 2011-04-23 Samuel Thibault <sthibault@debian.org> (tiny change)
3067
3068 * sysdep.c (wait_for_termination): On GNU Hurd, kill returns -1 on
3069 zombies (Bug#8467).
3070
3071 2011-04-19 Eli Zaretskii <eliz@gnu.org>
3072
3073 * syntax.h (SETUP_SYNTAX_TABLE_FOR_OBJECT): Fix setting of
3074 gl_state.e_property when gl_state.object is Qt.
3075
3076 * insdel.c (make_gap_larger): Remove limitation of buffer size
3077 to <= INT_MAX.
3078
3079 2011-04-18 Chong Yidong <cyd@stupidchicken.com>
3080
3081 * xdisp.c (lookup_glyphless_char_display)
3082 (produce_glyphless_glyph): Handle cons cell entry in
3083 glyphless-char-display.
3084 (Vglyphless_char_display): Document it.
3085
3086 * term.c (produce_glyphless_glyph): Handle cons cell entry in
3087 glyphless-char-display.
3088
3089 2011-04-17 Chong Yidong <cyd@stupidchicken.com>
3090
3091 * xdisp.c (get_next_display_element): Remove unnecessary ifdefs.
3092
3093 * termhooks.h (FRAME_WINDOW_P): Remove duplicated definitions.
3094
3095 * dispextern.h (FACE_SUITABLE_FOR_ASCII_CHAR_P): Add missing
3096 definition for no-X builds.
3097
3098 2011-04-16 Paul Eggert <eggert@cs.ucla.edu>
3099
3100 Static checks with GCC 4.6.0 and non-default toolkits.
3101
3102 * s/sol2-6.h, s/unixware.h (PTY_TTY_NAME_SPRINTF): Protoize decl.
3103
3104 * process.c (keyboard_bit_set): Define only if SIGIO.
3105 (send_process_trap): Mark it with NO_RETURN if it doesn't return.
3106 (send_process): Repair possible setjmp clobbering.
3107
3108 * s/usg5-4-common.h (SETUP_SLAVE_PTY): Don't pass extra arg to 'fatal'.
3109
3110 * eval.c: Include <stdio.h>, for vsnprintf on non-GNU/Linux hosts.
3111
3112 * data.c (arith_error): Mark with NO_RETURN if it doesn't return.
3113
3114 * alloc.c (bytes_used_when_full, SPARE_MEMORY, BYTES_USED):
3115 Define only if needed.
3116
3117 * sysdep.c (_FILE_OFFSET_BITS): Make this hack even uglier
3118 by pacifying GCC about it. Maybe it's time to retire it?
3119 * xfaces.c (USG, __TIMEVAL__): Likewise.
3120
3121 * dispextern.h (struct redisplay_interface): Rename param
3122 to avoid shadowing.
3123 * termhooks.h (struct terminal): Likewise.
3124 * xterm.c (xembed_send_message): Likewise.
3125
3126 * insdel.c (make_gap_smaller): Define only if
3127 USE_MMAP_FOR_BUFFERS || REL_ALLOC || DOUG_LEA_MALLOC.
3128
3129 * keyboard.c (read_char): Make a var volatile so longjmp won't clobber
3130 it.
3131
3132 * emacs.c (MAX_HEAP_BSS_DIFF, my_edata): Move to where they're used,
3133 so that we aren't warned about unused symbols.
3134
3135 * xfns.c (Fx_file_dialog): Rename local to avoid shadowing.
3136
3137 * xdisp.c (x_produce_glyphs): Mark var as initialized (Bug#8512).
3138
3139 * xfns.c (x_real_positions): Mark locals as initialized.
3140
3141 * xmenu.c (xmenu_show): Don't use uninitialized vars.
3142
3143 * xterm.c: Fix problems found by static analysis with other toolkits.
3144 (toolkit_scroll_bar_interaction): Define and use only if USE_X_TOOLKIT.
3145 (x_dispatch_event): Declare static if USE_GTK, and
3146 define if USE_GTK || USE_X_TOOLKIT.
3147 (SET_SAVED_BUTTON_EVENT): Define only if USE_X_TOOLKIT || USE_GTK.
3148 * xterm.h (x_dispatch_event): Extern only if USE_X_TOOLKIT.
3149 * xterm.c, xterm.h (x_mouse_leave): Bring this function back, but only
3150 if defined HAVE_MENUS && !defined USE_X_TOOLKIT && !defined USE_GTK.
3151
3152 * xmenu.c (menu_help_callback): Pointer type fixes.
3153 Use const pointers when pointing at readonly data. Avoid pointer
3154 signedness clashes.
3155 (FALSE): Remove unused macro.
3156 (update_frame_menubar): Remove unused decl.
3157
3158 * xfns.c (Fx_hide_tip): Move locals to avoid shadowing.
3159
3160 * menu.c (push_submenu_start, push_submenu_end): Do not define unless
3161 USE_X_TOOLKIT || USE_GTK || HAVE_NS || defined HAVE_NTGUI.
3162 (single_menu_item): Rename local to avoid shadowing.
3163
3164 * keyboard.c (make_lispy_event): Remove unused local var.
3165
3166 * frame.c, frame.h (x_get_resource_string): Bring this back, but
3167 only if HAVE_X_WINDOWS && !USE_X_TOOLKIT.
3168
3169 * bitmaps: Change bitmaps from unsigned char back to the X11
3170 compatible char. Avoid the old compiler warnings about
3171 out-of-range initializers by using, for example, '\xab' rather
3172 than 0xab.
3173
3174 * xgselect.c (xgselect_initialize): Check vs interface
3175 even if ! (defined (USE_GTK) || defined (HAVE_GCONF)).
3176
3177 * xmenu.c (xmenu_show): Rename parm to avoid shadowing.
3178
3179 * xterm.c (x_create_toolkit_scroll_bar): Use const * for pointers
3180 to read-only memory.
3181
3182 * fns.c (vector): Remove; this old hack is no longer needed.
3183
3184 * xsmfns.c (create_client_leader_window): Rename shadowing arg.
3185 Remove unused var.
3186 (gdk_x11_set_sm_client_id) [!USE_GTK]: Don't define.
3187
3188 * xrdb.c (x_load_resources): Omit unused local.
3189
3190 * xfns.c (free_frame_menubar, atof): Remove duplicate decls.
3191 (x_window): Rename locals to avoid shadowing.
3192 (USG): Use the kludged USG macro, to pacify gcc.
3193
3194 * xterm.c (x_alloc_nearest_color_for_widget): Remove; unused.
3195 (x_term_init): Remove local to avoid shadowing.
3196
3197 * xfns.c, xterm.c (_XEditResCheckMessages): Protoize decl.
3198
3199 * xdisp.c, dispextern.h (set_vertical_scroll_bar): Now extern if
3200 USE_TOOLKIT_SCROLL_BARS && !USE_GTK, as xterm.c needs it then.
3201
3202 2011-04-16 Eli Zaretskii <eliz@gnu.org>
3203
3204 * gnutls.c (Fgnutls_boot): Don't pass Lisp_Object to `error'.
3205
3206 Fix regex.c, syntax.c and friends for buffers > 2GB.
3207 * syntax.h (struct gl_state_s): Declare character position members
3208 EMACS_INT.
3209
3210 * syntax.c (update_syntax_table): Declare 2nd argument EMACS_INT.
3211
3212 * textprop.c (verify_interval_modification, interval_of):
3213 Declare arguments EMACS_INT.
3214
3215 * intervals.c (adjust_intervals_for_insertion): Declare arguments
3216 EMACS_INT.
3217
3218 * intervals.h (CHECK_TOTAL_LENGTH): Cast to EMACS_INT, not `int'.
3219
3220 * indent.c (Fvertical_motion): Local variable it_start is now
3221 EMACS_INT.
3222
3223 * regex.c (re_match, re_match_2, re_match_2_internal)
3224 (bcmp_translate, regcomp, regexec, print_double_string)
3225 (group_in_compile_stack, re_search, re_search_2, regex_compile)
3226 (re_compile_pattern, re_exec): Declare arguments and local
3227 variables `size_t' and `ssize_t' and return values `regoff_t', as
3228 appropriate.
3229 (POP_FAILURE_REG_OR_COUNT) <pfreg>: Declare `long'.
3230 (CHECK_INFINITE_LOOP) <failure>: Declare `ssize_t'.
3231 <compile_stack_type>: `size' and `avail' are now `size_t'.
3232
3233 * regex.h <regoff_t>: Use ssize_t, not int.
3234 (re_search, re_search_2, re_match, re_match_2): Arguments that
3235 specify buffer/string position and length are now ssize_t and
3236 size_t. Return type is regoff_t.
3237
3238 2011-04-16 Ben Key <bkey76@gmail.com>
3239
3240 * nsfont.m: Fixed bugs in ns_get_family and
3241 ns_descriptor_to_entity that were caused by using free to
3242 deallocate memory blocks that were allocated by xmalloc (via
3243 xstrdup). This caused Emacs to crash when compiled with
3244 XMALLOC_OVERRUN_CHECK defined (when Emacs was configured with
3245 --enable-checking=xmallocoverrun). xfree is now used to
3246 deallocate these memory blocks.
3247
3248 2011-04-15 Paul Eggert <eggert@cs.ucla.edu>
3249
3250 * sysdep.c (emacs_read): Remove unnecessary check vs MAX_RW_COUNT.
3251
3252 emacs_write: Accept and return EMACS_INT for sizes.
3253 See http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00514.html
3254 et seq.
3255 * gnutls.c, gnutls.h (emacs_gnutls_read, emacs_gnutls_write):
3256 Accept and return EMACS_INT.
3257 (emacs_gnutls_write): Return the number of bytes written on
3258 partial writes.
3259 * sysdep.c, lisp.h (emacs_read, emacs_write): Likewise.
3260 (emacs_read, emacs_write): Remove check for negative size, as the
3261 Emacs source code has been audited now.
3262 * sysdep.c (MAX_RW_COUNT): New macro, to work around kernel bugs.
3263 (emacs_read, emacs_write): Use it.
3264 * process.c (send_process): Adjust to the new signatures of
3265 emacs_write and emacs_gnutls_write. Do not attempt to store
3266 a byte offset into an 'int'; it might overflow.
3267 See http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00483.html
3268
3269 * sound.c: Don't assume sizes fit in 'int'.
3270 (struct sound_device.period_size, alsa_period_size):
3271 Return EMACS_INT, not int.
3272 (struct sound_device.write, vox_write, alsa_write):
3273 Accept EMACS_INT, not int.
3274 (wav_play, au_play): Use EMACS_INT to store sizes and to
3275 record read return values.
3276
3277 2011-04-15 Ben Key <bkey76@gmail.com>
3278
3279 * keyboard.c (Qundefined): Don't declare static since it is used
3280 in nsfns.m.
3281 * xfaces.c (Qbold, Qexpanded, Qitalic, Qcondensed): Don't declare
3282 static since they are used in nsfont.m.
3283
3284 2011-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
3285
3286 * process.c (Qprocessp): Don't declare static.
3287 * lisp.h (Qprocessp): Declare again.
3288
3289 2011-04-15 Juanma Barranquero <lekktu@gmail.com>
3290
3291 * font.c (Qopentype): Don't make static (used from w32uniscribe.c).
3292
3293 2011-04-14 Paul Eggert <eggert@cs.ucla.edu>
3294
3295 Improve C-level modularity by making more things 'static'.
3296
3297 Don't publish debugger-only interfaces to other modules.
3298 * lisp.h (safe_debug_print, debug_output_compilation_hack):
3299 (verify_bytepos, count_markers): Move decls to the only modules
3300 that need them.
3301 * region-cache.h (pp_cache): Likewise.
3302 * window.h (check_all_windows): Likewise.
3303 * marker.c, print.c, region-cache.c, window.c: Decls moved here.
3304
3305 * sysdep.c (croak): Now static, if
3306 defined TIOCNOTTY || defined USG5 || defined CYGWIN.
3307 * syssignal.h (croak): Declare only if not static.
3308
3309 * alloc.c (refill_memory_reserve): Now static if
3310 !defined REL_ALLOC || defined SYSTEM_MALLOC.
3311 * lisp.h (refill_memory_reserve): Declare only if not static.
3312
3313 * xsettings.c, xsettings.h (xsettings_get_system_normal_font):
3314 Define only if USE_LUCID.
3315
3316 * xrdb.c (x_customization_string, x_rm_string): Now static.
3317
3318 * xmenu.c (x_menu_wait_for_event): Export only if USE_MOTIF.
3319 * xterm.h (x_menu_wait_for_event): Declare only if USE_MOTIF.
3320
3321 * xdisp.c (draw_row_with_mouse_face): Now static.
3322 * dispextern.h (draw_row_with_mouse_fave): Remove decl.
3323
3324 * window.h (check_all_windows): Mark externally visible.
3325
3326 * window.c (window_deletion_count): Now static.
3327
3328 * undo.c: Make symbols static if they're not exported.
3329 (last_undo_buffer, last_boundary_position, pending_boundary):
3330 Now static.
3331
3332 * textprop.c (interval_insert_behind_hooks): Now static.
3333 (interval_insert_in_front_hooks): Likewise.
3334
3335 * term.c: Make symbols static if they're not exported.
3336 (tty_turn_off_highlight, get_tty_terminal, max_frame_cols):
3337 (max_frame_lines, tty_set_terminal_modes):
3338 (tty_reset_terminal_modes, tty_turn_off_highlight):
3339 (get_tty_terminal): Now static.
3340 (term_mouse_moveto): Do not define if HAVE_WINDOW_SYSTEM.
3341 * termhooks.h (term_mouse_moveto): Do not declare if
3342 HAVE_WINDOW_SYSTEM.
3343 * dispextern.h (tty_set_terminal_modes, tty_reset_terminal_modes):
3344 (tty_turn_off_highlight, get_tty_terminal): Remove decls.
3345
3346 * sysdep.c: Make symbols static if they're not exported.
3347 (emacs_get_tty, emacs_set_tty, old_fcntl_flags, old_fcntl_owner):
3348 Now static.
3349 (sigprocmask_set, full_mask): Remove; unused.
3350 (wait_debugging): Mark as visible.
3351 * syssignal.h (SIGFULLMASK, full_mask): Remove decls.
3352 * systty.h (emacs_get_tty, emacs_set_tty): Remove decls.
3353
3354 * syntax.c (syntax_temp): Define only if !__GNUC__.
3355
3356 * sound.c (current_sound_device, current_sound): Now static.
3357
3358 * search.c (searchbufs, searchbuf_head): Now static.
3359
3360 * scroll.c (scroll_cost): Remove; unused.
3361 * dispextern.h (scroll_cost): Remove decl.
3362
3363 * region-cache.h (pp_cache): Mark as externally visible.
3364
3365 * process.c: Make symbols static if they're not exported.
3366 (process_tick, update_tick, create_process, chan_process):
3367 (Vprocess_alist, proc_buffered_char, datagram_access):
3368 (fd_callback_data, send_process_frame, process_sent_to): Now static.
3369 (deactivate_process): Mark defn as static, as well as decl.
3370 * lisp.h (create_process): Remove decl.
3371 * process.h (chan_process, Vprocess_alist): Remove decls.
3372
3373 * print.c: Make symbols static if they're not exported.
3374 (print_depth, new_backquote_output, being_printed, print_buffer):
3375 (print_buffer_size, print_buffer_pos, print_buffer_pos_byte):
3376 (print_interval, print_number_index, initial_stderr_stream):
3377 Now static.
3378 * lisp.h (Fprinc): Remove decl.
3379 (debug_output_compilation_hack): Mark as externally visible.
3380
3381 * sysdep.c (croak): Move decl from here to syssignal.h.
3382 * syssignal.h (croak): Put it here, so the API can be checked when
3383 'croak' is called from dissociate_if_controlling_tty.
3384
3385 * minibuf.c: Make symbols static if they're not exported.
3386 (minibuf_save_list, choose_minibuf_frame): Now static.
3387 * lisp.h (choose_minibuf_frame): Remove decl.
3388
3389 * lisp.h (verify_bytepos, count_markers): Mark as externally visible.
3390
3391 * lread.c: Make symbols static if they're not exported.
3392 (read_objects, initial_obarray, oblookup_last_bucket_number):
3393 Now static.
3394 (make_symbol): Remove; unused.
3395 * lisp.h (initial_obarray, make_symbol): Remove decls.
3396
3397 * keyboard.c: Make symbols static if they're not exported.
3398 (single_kboard, recent_keys_index, total_keys, recent_keys):
3399 (this_command_key_count_reset, raw_keybuf, raw_keybuf_count):
3400 (this_single_command_key_start, echoing, last_auto_save):
3401 (read_key_sequence_cmd, dribble, recursive_edit_unwind):
3402 (command_loop, echo_now, keyboard_init_hook, help_char_p):
3403 (quit_throw_to_read_char, command_loop_2, top_level_1, poll_timer):
3404 (Vlispy_mouse_stem, double_click_count):
3405 Now static.
3406 (force_auto_save_soon): Define only if SIGDANGER.
3407 (ignore_mouse_drag_p): Now static if
3408 !defined HAVE_WINDOW_SYSTEM || defined USE_GTK || defined HAVE_NS.
3409 (print_help): Remove; unused.
3410 (stop_character, last_timer_event): Mark as externally visible.
3411 * keyboard.h (ignore_mouse_drag_p): Declare only if
3412 defined HAVE_WINDOW_SYSTEM && !defined USE_GTK && !defined HAVE_NS.
3413 (echo_now, help_char_p, quit_throw_to_read_char): Remove decls.
3414 * lisp.h (echoing): Remove decl.
3415 (force_auto_save_soon): Declare only if SIGDANGER.
3416 * xdisp.c (redisplay_window): Simplify code, to make it more
3417 obvious that ignore_mouse_drag_p is not accessed if !defined
3418 USE_GTK && !defined HAVE_NS.
3419
3420 * intervals.c: Make symbols static if they're not exported.
3421 (merge_properties_sticky, merge_interval_right, delete_interval):
3422 Now static.
3423 * intervals.h (merge_interval_right, delete_interval): Remove decls.
3424
3425 * insdel.c: Make symbols static if they're not exported.
3426 However, leave prepare_to_modify_buffer alone. It's never
3427 called from outside this function, but that appears to be a bug.
3428 (combine_after_change_list, combine_after_change_buffer):
3429 (adjust_after_replace, signal_before_change): Now static.
3430 (adjust_after_replace_noundo): Remove; unused.
3431 * lisp.h (adjust_after_replace, adjust_after_replace_noundo):
3432 (signal_before_change): Remove decls.
3433
3434 * indent.c (val_compute_motion, val_vmotion): Now static.
3435
3436 * image.c: Make symbols static if they're not exported.
3437 * dispextern.h (x_create_bitmap_from_xpm_data): Do not declare
3438 if USE_GTK.
3439 * image.c (x_create_bitmap_from_xpm_data): Do not define if USE_GTK.
3440 (xpm_color_cache, ct_table, ct_colors_allocated): Now static.
3441
3442 * fringe.c (standard_bitmaps): Now static.
3443 (max_used_fringe_bitmap): Now static, unless HAVE_NS.
3444
3445 * frame.c: Make symbols static if they're not exported.
3446 (x_report_frame_params, make_terminal_frame): Now static.
3447 (get_frame_param): Now static, unless HAVE_NS.
3448 (x_fullscreen_adjust): Define if WINDOWSNT, not if HAVE_WINDOW_SYSTEM.
3449 (x_get_resource_string): Remove; not used.
3450 * frame.h (make_terminal_frame, x_report_frame_params):
3451 (x_get_resource_string); Remove decls.
3452 (x_fullscreen_adjust): Declare only if WINDOWSNT.
3453 * lisp.h (get_frame_param): Declare only if HAVE_NS.
3454
3455 * font.c, fontset.c: Make symbols static if they're not exported.
3456 * dispextern.h (FACE_SUITABLE_FOR_ASCII_CHAR_P): New macro.
3457 (FACE_SUITABLE_FOR_CHAR_P): Use it.
3458 * font.c (font_close_object): Now static.
3459 * font.h (font_close_object): Remove.
3460 * fontset.c (FONTSET_OBJLIST): Remove.
3461 (free_realized_fontset) #if-0 the body, which does nothing.
3462 (face_suitable_for_char_p): #if-0, as it's never called.
3463 * fontset.h (face_suitable_for_char_p): Remove decl.
3464 * xfaces.c (face_at_string_position):
3465 Use FACE_SUITABLE_FOR_ASCII_CHAR_P, not FACE_SUITABLE_FOR_CHAR_P,
3466 since 0 is always ASCII.
3467
3468 * fns.c (weak_hash_tables): Now static.
3469
3470 * fileio.c: Make symbols static if they're not exported.
3471 (auto_saving, auto_save_mode_bits, auto_save_error_occurred):
3472 (Vwrite_region_annotation_buffers): Now static.
3473
3474 * eval.c: Make symbols static if they're not exported.
3475 (backtrace_list, lisp_eval_depth, when_entered_debugger): Now static.
3476 * lisp.h (backtrace_list): Remove decl.
3477
3478 * emacs.c: Make symbols static if they're not exported.
3479 (malloc_state_ptr, malloc_using_checking, syms_of_emacs):
3480 (fatal_error_code, fatal_error_signal_hook, standard_args):
3481 Now static.
3482 (fatal_error_signal): Now static, unless FLOAT_CATCH_SIGKILL.
3483 (DEFINE_DUMMY_FUNCTION): Mark function as externally visible.
3484 (__CTOR_LIST__, __DTOR_LIST__): Now externally visible.
3485 * lisp.h (fatal_error_signal_hook): Remove decl.
3486 (fatal_error_signal): Declare only if FLOAT_CATCH_SIGKILL.
3487
3488 * editfns.c: Move a (normally-unused) function to its only use.
3489 * editfns.c, lisp.h (get_operating_system_release): Remove.
3490 * process.c (init_process) [DARWIN_OS]: Do it inline, as it is not
3491 worth the hassle of breaking this out.
3492
3493 * xterm.c: Make symbols static if they're not exported.
3494 (x_raise_frame, x_lower_frame, x_wm_set_window_state):
3495 (x_wm_set_icon_pixmap, x_initialize, XTread_socket_fake_io_error):
3496 (x_destroy_window, x_delete_display):
3497 Now static.
3498 (x_dispatch_event): Now static if ! (USE_MOTIF || USE_X_TOOLKIT).
3499 (x_mouse_leave): Remove; unused.
3500 * xterm.h (x_display_info_for_name, x_raise_frame, x_lower_frame):
3501 (x_destroy_window, x_wm_set_window_state, x_wm_set_icon_pixmap):
3502 (x_delete_display, x_initialize, x_set_border_pixel, x_screen_planes):
3503 Remove decls.
3504 (x_mouse_leave): Declare only if WINDOWSNT.
3505 (x_dispatch_event): Declare only if USE_MOTIF or USE_X_TOOLKIT.
3506 (xic_create_fontsetname): Declare only if HAVE_X_WINDOWS &&
3507 USE_X_TOOLKIT.
3508
3509 * ftxfont.c: Make symbols static if they're not exported.
3510 (ftxfont_driver): Export only if !defined HAVE_XFT && def8ined
3511 HAVE_FREETYPE.
3512 * font.h (ftxfont_driver): Likewise.
3513
3514 * xfns.c: Make symbols static if they're not exported.
3515 (x_last_font_name, x_display_info_for_name):
3516 (x_set_foreground_color, x_set_background_color, x_set_mouse_color):
3517 (x_set_cursor_color, x_set_border_pixel, x_set_border_color):
3518 (x_set_cursor_type, x_set_icon_type, x_set_icon_name):
3519 (x_set_scroll_bar_foreground, x_set_scroll_bar_background):
3520 (x_explicitly_set_name, x_set_title, xic_defaut_fontset, tip_timer):
3521 (last_show_tip_args): Now static.
3522 (xic_defaut_fontset, xic_create_fontsetname): Define only if
3523 defined HAVE_X_WINDOWS && defined USE_X_TOOLKIT
3524 (x_screen_planes): Remove; unused.
3525 * dispextern.h (x_screen_planes): Remove decl.
3526
3527 * dispnew.c: Make symbols static if they're not exported.
3528 * dispextern.h (redraw_garbaged_frames, scrolling):
3529 (increment_row_positions): Remove.
3530 * dispnew.c (new_glyph_matrix, increment_row_positions, scrolling):
3531 (delayed_size_change, glyph_matrix_count, glyph_pool_count):
3532 Now static.
3533 (redraw_garbaged_frames): Remove; unused.
3534
3535 * xfaces.c: Make symbols static if they're not exported.
3536 * dispextern.h (ascii_face_of_lisp_face, free_realized_face):
3537 Remove decls.
3538 * xterm.h (defined_color): Remove decls.
3539 (x_free_dpy_colors): Declare only if USE_X_TOOLKIT.
3540 * xfaces.c (tty_suppress_bold_inverse_default_colors_p):
3541 (menu_face_changed_default, defined_color, free_realized_face):
3542 (x_free_dpy_colors): Define only if USE_X_TOOLKIT.
3543 (ascii_face_of_lisp_face): Remove; unused.
3544
3545 * xdisp.c: Make symbols static if they're not exported.
3546 * dispextern.h (scratch_glyph_row, window_box_edges):
3547 (glyph_to_pixel_coords, set_cursor_from_row):
3548 (get_next_display_element, set_iterator_to_next):
3549 (highlight_trailing_whitespace, frame_to_window_pixel_xy):
3550 (show_mouse_face): Remove decls
3551 * frame.h (message_buf_print): Likewise.
3552 * lisp.h (pop_message, set_message, check_point_in_composition):
3553 Likewise.
3554 * xterm.h (set_vertical_scroll_bar): Likewise.
3555 * xdisp.c (list_of_error, Vmessage_stack, line_number_displayed):
3556 (message_buf_print, scratch_glyph_row, displayed_buffer):
3557 (set_iterator_to_next, pop_message, set_message, set_cursor_from_row):
3558 (get_next_display_element, show_mouse_face, window_box_edges):
3559 (frame_to_window_pixel_xy, check_point_in_composition):
3560 (set_vertical_scroll_bar, highlight_trailing_whitespace): Now static.
3561 (glyph_to_pixel_coords): Remove; unused.
3562
3563 * dired.c (file_name_completion): Now static.
3564
3565 * dbusbind.c (xd_in_read_queued_messages): Now static.
3566
3567 * lisp.h (circular_list_error, FOREACH): Remove; unused.
3568 * data.c (circular_list_error): Remove.
3569
3570 * commands.h (last_point_position, last_point_position_buffer):
3571 (last_point_position_window): Remove decls.
3572 * keyboard.c: Make these variables static.
3573
3574 * coding.h (coding, code_convert_region, encode_coding_gap):
3575 Remove decls.
3576 * coding.c (Vsjis_coding_system, Vbig5_coding_system):
3577 (iso_code_class, detect_coding, code_convert_region): Now static.
3578 (encode_coding_gap): Remove; unused.
3579
3580 * chartab.c (chartab_chars, chartab_bits): Now static.
3581
3582 * charset.h (charset_iso_8859_1): Remove decl.
3583 * charset.c (charset_iso_8859_1, charset_emacs, map_charset_for_dump):
3584 Now static.
3585
3586 * ccl.h (check_ccl_update, Vccl_program_table): Remove decls.
3587 * ccl.c (Vccl_program_table): Now static.
3588 (check_ccl_update): Remove; unused.
3589
3590 * category.c (SET_CATEGORY_SET, set_category_set): Move here.
3591 * category.h: ... from here.
3592 * category.c (check_category_table, set_category_set): Now static.
3593
3594 * casetab.c (Vascii_upcase_table, Vascii_eqv_table): Now static.
3595 * lisp.h: Remove these decls.
3596
3597 * buffer.c (buffer_count): Remove unused var.
3598
3599 * bidi.c (bidi_dump_cached_states): Mark as externally visible,
3600 so that it's not optimized away.
3601 (bidi_ignore_explicit_marks_for_paragraph_level): Likewise.
3602 * dispextern.h (bidi_dump_cached_states): Remove, since it's
3603 exported only to the debugger.
3604
3605 * atimer.c (alarm_signal_handler, run_all_atimers): Now static.
3606 * atimer.h (run_all_atimers): Remove; not exported.
3607
3608 font.c: Make copy_font_spec and merge_font_spec ordinary C functions.
3609 * font.c (copy_font_spec): Rename from Fcopy_font_spec, since it
3610 was inaccessible from Lisp.
3611 (merge_font_spec): Likewise, renaming from Fmerge_font_spec.
3612 * font.c, font.h, fontset.c, xfaces.c, xfont.c: Change all uses.
3613
3614 alloc.c: Import and export fewer symbols, and remove unused items.
3615 * lisp.h (suppress_checking, die): Declare only if ENABLE_CHECKING
3616 is defined.
3617 (suppress_checking): Add EXTERNALLY_VISIBLE attribute, so that
3618 it's not optimized away by whole-program optimization.
3619 (message_enable_multibyte, free_misc): Remove.
3620 (catchlist, handlerlist, mark_backtrace):
3621 Declare only if BYTE_MARK_STACK.
3622 (mark_byte_stack): Likewise, fixing a ifdef-vs-if typo.
3623 * alloc.c (pure): Export only if VIRT_ADDR_VARIES is defined.
3624 (message_enable_multibyte): Remove decl.
3625 (free_misc, interval_free_list, float_block, float_block_index):
3626 (n_float_blocks, float_free_list, cons_block, cons_block_index):
3627 (cons_free_list, last_marked_index):
3628 Now static.
3629 (suppress_checking, die): Define only if ENABLE_CHECKING is defined.
3630 * eval.c (catchlist, handlerlist): Export only if BYTE_MARK_STACK.
3631 (mark_backtrace): Define only if BYTE_MARK_STACK.
3632 * xdisp.c (message_enable_multibyte): Now static.
3633
3634 Declare Lisp_Object Q* variables to be 'static' if not exported.
3635 This makes it easier for human readers (and static analyzers)
3636 to see whether these variables are used from other modules.
3637 * alloc.c, buffer.c, bytecode.c, callint.c, casetab.c, category.c:
3638 * ccl.c, character.c, charset.c, cmds.c, coding.c, composite.c:
3639 * data.c, dbusbind.c, dired.c, editfns.c, eval.c, fileio.c, fns.c:
3640 * font.c, frame.c, fringe.c, ftfont.c, image.c, keyboard.c, keymap.c:
3641 * lread.c, macros.c, minibuf.c, print.c, process.c, search.c:
3642 * sound.c, syntax.c, textprop.c, window.c, xdisp.c, xfaces.c, xfns.c:
3643 * xmenu.c, xselect.c:
3644 Declare Q* vars static if they are not used in other modules.
3645 * ccl.h, character.h, charset.h, coding.h, composite.h, font.h:
3646 * frame.h, intervals.h, keyboard.h, lisp.h, process.h, syntax.h:
3647 Remove decls of unexported vars.
3648 * keyboard.h (EVENT_HEAD_UNMODIFIED): Remove now-unused macro.
3649
3650 * lisp.h (DEFINE_FUNC): Make sname 'static'.
3651
3652 Make Emacs functions such as Fatom 'static' by default.
3653 This makes it easier for human readers (and static analyzers)
3654 to see whether these functions can be called from other modules.
3655 DEFUN now defines a static function. To make the function external
3656 so that it can be used in other C modules, use the new macro DEFUE.
3657 * lisp.h (Funibyte_char_to_multibyte, Fsyntax_table_p):
3658 (Finit_image_library):
3659 (Feval_region, Fbacktrace, Ffetch_bytecode, Fswitch_to_buffer):
3660 (Ffile_executable_p, Fmake_symbolic_link, Fcommand_execute):
3661 (Fget_process, Fdocumentation_property, Fbyte_code, Ffile_attributes):
3662 Remove decls, since these functions are now static.
3663 (Funintern, Fget_internal_run_time): New decls, since these functions
3664 were already external.
3665
3666 * alloc.c, buffer.c, callint.c, callproc.c, casefiddle.c, casetab.c:
3667 * ccl.c, character.c, chartab.c, cmds.c, coding.c, data.c, dispnew.c:
3668 * doc.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, floatfns.c:
3669 * fns.c, font.c, fontset.c, frame.c, image.c, indent.c:
3670 * keyboard.c, keymap.c, lread.c:
3671 * macros.c, marker.c, menu.c, minibuf.c, print.c, process.c, search.c:
3672 * syntax.c, term.c, terminal.c, textprop.c, undo.c:
3673 * window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, xsettings.c:
3674 Mark functions with DEFUE instead of DEFUN,
3675 if they are used in other modules.
3676 * buffer.c (Fset_buffer_major_mode, Fdelete_overlay): New forward
3677 decls for now-static functions.
3678 * buffer.h (Fdelete_overlay): Remove decl.
3679 * callproc.c (Fgetenv_internal): Mark as internal.
3680 * composite.c (Fremove_list_of_text_properties): Remove decl.
3681 (Fcomposition_get_gstring): New forward static decl.
3682 * composite.h (Fcomposite_get_gstring): Remove decl.
3683 * dired.c (Ffile_attributes): New forward static decl.
3684 * doc.c (Fdocumntation_property): New forward static decl.
3685 * eval.c (Ffetch_bytecode): New forward static decl.
3686 (Funintern): Remove extern decl; now in .h file where it belongs.
3687 * fileio.c (Fmake_symbolic_link): New forward static decl.
3688 * image.c (Finit_image_library): New forward static decl.
3689 * insdel.c (Fcombine_after_change_execute): Make forward decl static.
3690 * intervals.h (Fprevious_property_change):
3691 (Fremove_list_of_text_properties): Remove decls.
3692 * keyboard.c (Fthis_command_keys): Remove decl.
3693 (Fcommand_execute): New forward static decl.
3694 * keymap.c (Flookup_key): New forward static decl.
3695 (Fcopy_keymap): Now static.
3696 * keymap.h (Flookup_key): Remove decl.
3697 * process.c (Fget_process): New forward static decl.
3698 (Fprocess_datagram_address): Mark as internal.
3699 * syntax.c (Fsyntax_table_p): New forward static decl.
3700 (skip_chars): Remove duplicate decl.
3701 * textprop.c (Fprevious_property_change): New forward static decl.
3702 * window.c (Fset_window_fringes, Fset_window_scroll_bars):
3703 Now internal.
3704 (Fset_window_margins, Fset_window_vscroll): New forward static decls.
3705 * window.h (Fset_window_vscroll, Fset_window_margins): Remove decls.
3706
3707 * editfns.c (Fformat): Remove unreachable code.
3708
3709 2011-04-14 Andreas Schwab <schwab@linux-m68k.org>
3710
3711 * fileio.c (Finsert_file_contents): Fix typo in 2005-05-13
3712 change. (Bug#8496)
3713
3714 2011-04-13 Eli Zaretskii <eliz@gnu.org>
3715
3716 * xdisp.c (handle_invisible_prop): Don't call bidi_paragraph_init
3717 when at ZV. (Bug#8487)
3718
3719 2011-04-12 Andreas Schwab <schwab@linux-m68k.org>
3720
3721 * charset.c (Fclear_charset_maps): Use xfree instead of free.
3722 (Bug#8437)
3723 * keyboard.c (parse_tool_bar_item): Likewise.
3724 * sound.c (sound_cleanup, alsa_close): Likewise.
3725 * termcap.c (tgetent): Likewise.
3726 * xfns.c (x_default_font_parameter): Likewise.
3727 * xsettings.c (read_and_apply_settings): Likewise.
3728
3729 * alloc.c (overrun_check_malloc, overrun_check_realloc)
3730 (overrun_check_free): Protoize.
3731
3732 2011-04-12 Paul Eggert <eggert@cs.ucla.edu>
3733
3734 * sysdep.c (emacs_read, emacs_write): Check for negative sizes
3735 since callers should never pass a negative size.
3736 Change the signature to match that of plain 'read' and 'write'; see
3737 <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00397.html>.
3738 * lisp.h: Update prototypes of emacs_write and emacs_read.
3739
3740 2011-04-11 Eli Zaretskii <eliz@gnu.org>
3741
3742 * xdisp.c (redisplay_window): Don't try to determine the character
3743 position of the scroll margin if the window start point w->startp
3744 is outside the buffer's accessible region. (Bug#8468)
3745
3746 2011-04-10 Eli Zaretskii <eliz@gnu.org>
3747
3748 Fix write-region and its subroutines for buffers > 2GB.
3749 * fileio.c (a_write, e_write): Modify declaration of arguments and
3750 local variables to support buffers larger than 2GB.
3751 (Fcopy_file): Use EMACS_INT for return value of emacs_read.
3752
3753 * sysdep.c (emacs_write, emacs_read): Use ssize_t for last
3754 argument, local variables, and return value.
3755
3756 * lisp.h: Update prototypes of emacs_write and emacs_read.
3757
3758 * sound.c (vox_write): Use ssize_t for return value of emacs_write.
3759
3760 2011-04-10 Paul Eggert <eggert@cs.ucla.edu>
3761
3762 * xdisp.c (vmessage): Use memchr, not strnlen, which some hosts lack.
3763
3764 Fix more problems found by GCC 4.6.0's static checks.
3765
3766 * xdisp.c (vmessage): Use a better test for character truncation.
3767
3768 * charset.c (load_charset_map): <, not <=, for optimization,
3769 and to avoid potential problems with integer overflow.
3770 * chartab.c (sub_char_table_set_range, char_table_set_range): Likewise.
3771 * casetab.c (set_identity, shuffle): Likewise.
3772 * editfns.c (Fformat): Likewise.
3773 * syntax.c (skip_chars): Likewise.
3774
3775 * xmenu.c (set_frame_menubar): Allocate smaller local vectors.
3776 This also lets GCC 4.6.0 generate slightly better loop code.
3777
3778 * callint.c (Fcall_interactively): <, not <=, for optimization.
3779 (Fcall_interactively): Count the number of arguments produced,
3780 not the number of arguments given. This is simpler and lets GCC
3781 4.6.0 generate slightly better code.
3782
3783 * ftfont.c: Distingish more carefully between FcChar8 and char.
3784 The previous code passed unsigned char * to a functions like
3785 strlen and xstrcasecmp that expect char *, which does not
3786 conform to the C standard.
3787 (get_adstyle_property, ftfont_pattern_entity): Use FcChar8 for
3788 arguments to FcPatternGetString, and explicitly cast FcChar8 * to
3789 char * when the C standard requires it.
3790
3791 * keyboard.c (read_char): Remove unused var.
3792
3793 * eval.c: Port to Windows vsnprintf (Bug#8435).
3794 Include <limits.h>.
3795 (SIZE_MAX): Define if the headers do not.
3796 (verror): Do not give up if vsnprintf returns a negative count.
3797 Instead, grow the buffer. This ports to Windows vsnprintf, which
3798 does not conform to C99. Problem reported by Eli Zaretskii.
3799 Also, simplify the allocation scheme, by avoiding the need for
3800 calling realloc, and removing the ALLOCATED variable.
3801
3802 * eval.c (verror): Initial buffer size is 4000 (not 200) bytes.
3803
3804 Remove invocations of doprnt, as Emacs now uses vsnprintf.
3805 But keep the doprint source code for now, as we might revamp it
3806 and use it again (Bug#8435).
3807 * lisp.h (doprnt): Remove.
3808 * Makefile.in (base_obj): Remove doprnt.o.
3809 * deps.mk (doprnt.o): Remove.
3810
3811 error: Print 32- and 64-bit integers portably (Bug#8435).
3812 Without this change, on typical 64-bit hosts error ("...%d...", N)
3813 was used to print both 32- and 64-bit integers N, which relied on
3814 undefined behavior.
3815 * lisp.h, src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h (pEd):
3816 New macro.
3817 * lisp.h (error, verror): Mark as printf-like functions.
3818 * eval.c (verror): Use vsnprintf, not doprnt, to do the real work.
3819 Report overflow in size calculations when allocating printf buffer.
3820 Do not truncate output string at its first null byte.
3821 * xdisp.c (vmessage): Use vsnprintf, not doprnt, to do the real work.
3822 Truncate the output at a character boundary, since vsnprintf does not
3823 do that.
3824 * charset.c (check_iso_charset_parameter): Convert internal
3825 character to string before calling 'error', since %c now has the
3826 printf meaning.
3827 * coding.c (Fdecode_sjis_char, Fdecode_big5_char): Avoid int
3828 overflow when computing char to be passed to 'error'. Do not
3829 pass Lisp_Object to 'error'; pass the integer instead.
3830 * nsfns.m (Fns_do_applescript): Use int, not long, since it's
3831 formatted with plain %d.
3832
3833 * eval.c (internal_lisp_condition_case): Don't pass spurious arg.
3834
3835 * keyboard.c (access_keymap_keyremap): Print func name, not garbage.
3836
3837 * coding.c (Fdecode_sjis_char): Don't assume CODE fits in int.
3838
3839 * xterm.c (x_catch_errors): Remove duplicate declaration.
3840
3841 * term.c (maybe_fatal): Mark its 3rd arg as a printf format, too.
3842
3843 * xdisp.c, lisp.h (message_nolog): Remove; unused.
3844
3845 2011-04-10 Jim Meyering <meyering@redhat.com>
3846
3847 use ssize_t and size_t for read- and write-like emacs_gnutls_* functions
3848 * gnutls.c (emacs_gnutls_read): Adjust signature to be more read-like:
3849 return ssize_t not "int", and use size_t as the buffer length.
3850 (emacs_gnutls_write): Likewise, and make the buffer pointer "const".
3851 * gnutls.h: Update declarations.
3852 * process.c (read_process_output): Use ssize_t, to match.
3853 (send_process): Likewise.
3854
3855 2011-04-09 Chong Yidong <cyd@stupidchicken.com>
3856
3857 * image.c (Fimagemagick_types): Doc fix, and comment cleanup.
3858
3859 2011-04-09 Chong Yidong <cyd@stupidchicken.com>
3860
3861 * ftfont.c (get_adstyle_property, ftfont_pattern_entity):
3862 Use unsigned char, to match FcChar8 type definition.
3863
3864 * xterm.c (handle_one_xevent):
3865 * xmenu.c (create_and_show_popup_menu):
3866 * xselect.c (x_decline_selection_request)
3867 (x_reply_selection_request): Avoid type-punned deref of X events.
3868
3869 2011-04-09 Eli Zaretskii <eliz@gnu.org>
3870
3871 Fix some uses of `int' instead of EMACS_INT.
3872 * search.c (string_match_1, fast_string_match)
3873 (fast_c_string_match_ignore_case, fast_string_match_ignore_case)
3874 (scan_buffer, find_next_newline_no_quit)
3875 (find_before_next_newline, search_command, Freplace_match)
3876 (Fmatch_data): Make some `int' variables be EMACS_INT.
3877
3878 * xdisp.c (display_count_lines): 3rd argument and return value now
3879 EMACS_INT. All callers changed.
3880 (pint2hrstr): Last argument is now EMACS_INT.
3881
3882 * coding.c (detect_coding_utf_8, detect_coding_emacs_mule)
3883 (detect_coding_iso_2022, detect_coding_sjis, detect_coding_big5)
3884 (detect_coding_ccl, detect_coding_charset, decode_coding_utf_8)
3885 (decode_coding_utf_16, decode_coding_emacs_mule)
3886 (decode_coding_iso_2022, decode_coding_sjis, decode_coding_big5)
3887 (decode_coding_ccl, decode_coding_charset)
3888 <consumed_chars, consumed_chars_base>: Declare EMACS_INT.
3889 (decode_coding_iso_2022, decode_coding_emacs_mule)
3890 (decode_coding_sjis, decode_coding_big5, decode_coding_charset)
3891 <char_offset, last_offset>: Declare EMACS_INT.
3892 (encode_coding_utf_8, encode_coding_utf_16)
3893 (encode_coding_emacs_mule, encode_invocation_designation)
3894 (encode_designation_at_bol, encode_coding_iso_2022)
3895 (encode_coding_sjis, encode_coding_big5, encode_coding_ccl)
3896 (encode_coding_raw_text, encode_coding_charset) <produced_chars>:
3897 Declare EMACS_INT.
3898 (ASSURE_DESTINATION): Declare more_bytes EMACS_INT.
3899 (encode_invocation_designation): Last argument P_NCHARS is now
3900 EMACS_INT.
3901 (decode_eol): Declare pos_byte, pos, and pos_end EMACS_INT.
3902 (produce_chars): from_nchars and to_nchars are now EMACS_INT.
3903
3904 * coding.h (struct coding_system) <head_ascii>: Declare EMACS_INT.
3905 All users changed.
3906
3907 * ccl.c (Fccl_execute_on_string): Declare some variables
3908 EMACS_INT.
3909
3910 2011-04-08 Samuel Thibault <sthibault@debian.org> (tiny change)
3911
3912 * term.c (init_tty): Fix incorrect ifdef placement (Bug#8450).
3913
3914 2011-03-19 Christoph Scholtes <cschol2112@googlemail.com>
3915
3916 * process.c (Fformat_network_address): Doc fix.
3917
3918 2011-04-08 T.V. Raman <tv.raman.tv@gmail.com> (tiny change)
3919
3920 * xml.c (parse_region): Avoid creating spurious whiespace nodes.
3921
3922 2011-04-08 Chong Yidong <cyd@stupidchicken.com>
3923
3924 * keyboard.c (read_char): Call Lisp function help-form-show,
3925 instead of using internal_with_output_to_temp_buffer.
3926 (Qhelp_form_show): New var.
3927 (syms_of_keyboard): Use DEFSYM macro.
3928
3929 * print.c (internal_with_output_to_temp_buffer): Function deleted.
3930
3931 * lisp.h (internal_with_output_to_temp_buffer): Remove prototype.
3932
3933 2011-04-06 Chong Yidong <cyd@stupidchicken.com>
3934
3935 * process.c (Flist_processes): Remove to Lisp.
3936 (list_processes_1): Delete.
3937
3938 2011-04-06 Eli Zaretskii <eliz@gnu.org>
3939
3940 * msdos.c (careadlinkat, careadlinkatcwd): MS-DOS replacements.
3941
3942 * w32.c (careadlinkat, careadlinkatcwd): New always-fail stubs.
3943
3944 2011-04-06 Paul Eggert <eggert@cs.ucla.edu>
3945
3946 Fix more problems found by GCC 4.6.0's static checks.
3947
3948 * xmenu.c (Fx_popup_dialog): Don't assume string is free of formats.
3949
3950 * menu.c (Fx_popup_menu): Don't assume error_name lacks printf formats.
3951
3952 * lisp.h (message, message_nolog, fatal): Mark as printf-like.
3953
3954 * xdisp.c (vmessage): Mark as a printf-like function.
3955
3956 * term.c (vfatal, maybe_fatal): Mark as printf-like functions.
3957
3958 * sound.c (sound_warning): Don't crash if arg contains a printf format.
3959
3960 * image.c (tiff_error_handler, tiff_warning_handler): Mark as
3961 printf-like functions.
3962 (tiff_load): Add casts to remove these marks before passing them
3963 to system-supplied API.
3964
3965 * eval.c (Fsignal): Remove excess argument to 'fatal'.
3966
3967 * coding.c (EMIT_ONE_BYTE, EMIT_TWO_BYTES): Use unsigned, not int.
3968 This avoids several warnings with gcc -Wstrict-overflow.
3969 (DECODE_COMPOSITION_RULE): If the rule is invalid, goto invalid_code
3970 directly, rather than having caller test rule sign. This avoids
3971 some unnecessary tests.
3972 * composite.h (COMPOSITION_ENCODE_RULE_VALID): New macro.
3973 (COMPOSITION_ENCODE_RULE): Arguments now must be valid. This
3974 affects only one use, in DECODE_COMPOSITION_RULE, which is changed.
3975
3976 * xfont.c (xfont_text_extents): Remove var that was set but not used.
3977 (xfont_open): Avoid unnecessary tests.
3978
3979 * composite.c (composition_gstring_put_cache): Use unsigned integer.
3980
3981 * composite.h, composite.c (composition_gstring_put_cache):
3982 Use EMACS_INT, not int, for length.
3983
3984 * composite.h (COMPOSITION_DECODE_REFS): New macro,
3985 breaking out part of COMPOSITION_DECODE_RULE.
3986 (COMPOSITION_DECODE_RULE): Use it.
3987 * composite.c (get_composition_id): Remove unused local vars,
3988 by using the new macro.
3989
3990 * textprop.c (set_text_properties_1): Change while to do-while,
3991 since the condition is always true at first.
3992
3993 * intervals.c (graft_intervals_into_buffer): Mark var as used.
3994 (interval_deletion_adjustment): Return unsigned value.
3995 All uses changed.
3996
3997 * process.c (list_processes_1, create_pty, read_process_output):
3998 (exec_sentinel): Remove vars that were set but not used.
3999 (create_pty): Remove unnecessary "volatile"s.
4000 (Fnetwork_interface_info): Avoid possibility of int overflow.
4001 (read_process_output): Do adaptive read buffering even if carryover.
4002 (read_process_output): Simplify nbytes computation if buffered.
4003
4004 * bytecode.c (exec_byte_code): Rename local to avoid shadowing.
4005
4006 * syntax.c (scan_words): Remove var that was set but not used.
4007 (update_syntax_table): Use unsigned instead of int.
4008
4009 * lread.c (lisp_file_lexically_bound_p): Use ints rather than endptrs.
4010 (lisp_file_lexically_bound_p, read1): Use unsigned instead of int.
4011 (safe_to_load_p): Make the end-of-loop test the inverse of the in-loop.
4012
4013 * print.c (print_error_message): Avoid int overflow.
4014
4015 * font.c (font_list_entities): Redo for clarity,
4016 so that reader need not know FONT_DPI_INDEX + 1 == FONT_SPACING_INDEX.
4017
4018 * font.c (font_find_for_lface, Ffont_get_glyphs): Remove unused vars.
4019 (font_score): Avoid potential overflow in diff calculation.
4020
4021 * fns.c (substring_both): Remove var that is set but not used.
4022 (sxhash): Redo loop for clarity and to avoid wraparound warning.
4023
4024 * eval.c (funcall_lambda): Rename local to avoid shadowing.
4025
4026 * alloc.c (mark_object_loop_halt, mark_object): Use size_t, not int.
4027 Otherwise, GCC 4.6.0 optimizes the loop check away since the check
4028 can always succeed if overflow has undefined behavior.
4029
4030 * search.c (boyer_moore, wordify): Remove vars set but not used.
4031 (wordify): Omit three unnecessary tests.
4032
4033 * indent.c (MULTIBYTE_BYTES_WIDTH): Don't compute wide_column.
4034 All callers changed. This avoids the need for an unused var.
4035
4036 * casefiddle.c (casify_region): Remove var that is set but not used.
4037
4038 * dired.c (file_name_completion): Remove var that is set but not used.
4039
4040 * fileio.c (Finsert_file_contents): Make EOF condition clearer.
4041
4042 * fileio.c (Finsert_file_contents): Avoid signed integer overflow.
4043 (Finsert_file_contents): Remove unnecessary code checking fd.
4044
4045 * minibuf.c (read_minibuf_noninteractive): Use size_t for sizes.
4046 Check for integer overflow on size calculations.
4047
4048 * buffer.c (Fprevious_overlay_change): Remove var that is set
4049 but not used.
4050
4051 * keyboard.c (menu_bar_items, read_char_minibuf_menu_prompt):
4052 Remove vars that are set but not used.
4053 (timer_check_2): Don't assume timer-list and idle-timer-list are lists.
4054 (timer_check_2): Mark vars as initialized.
4055
4056 * gtkutil.c (xg_get_file_with_chooser): Mark var as initialized.
4057
4058 * image.c (lookup_image): Remove var that is set but not used.
4059 (xbm_load): Use parse_p, for gcc -Werror=unused-but-set-variable.
4060
4061 * fontset.c (Finternal_char_font, Ffontset_info): Remove vars
4062 that are set but not used.
4063
4064 * xfns.c (make_invisible_cursor): Don't return garbage
4065 if XCreateBitmapFromData fails (Bug#8410).
4066
4067 * xselect.c (x_get_local_selection, x_handle_property_notify):
4068 Remove vars that are set but not used.
4069
4070 * xfns.c (x_create_tip_frame): Remove var that is set but not used.
4071 (make_invisible_cursor): Initialize a possibly-uninitialized variable.
4072
4073 * xterm.c (x_scroll_bar_to_input_event) [!USE_GTK]:
4074 Remove var that is set but not used.
4075 (scroll_bar_windows_size): Now size_t, not int.
4076 (x_send_scroll_bar_event): Use size_t, not int, for sizes.
4077 Check for overflow.
4078
4079 * xfaces.c (realize_named_face): Remove vars that are set but not used.
4080 (map_tty_color) [!defined MSDOS]: Likewise.
4081
4082 * term.c (tty_write_glyphs): Use size_t; this avoids overflow warning.
4083
4084 * coding.c: Remove vars that are set but not used.
4085 (DECODE_COMPOSITION_RULE): Remove 2nd arg, which is unused.
4086 All callers changed.
4087 (decode_coding_utf_8, decode_coding_utf_16 decode_coding_emacs_mule):
4088 (decode_coding_iso_2022, encode_coding_sjis, encode_coding_big5):
4089 (decode_coding_charset): Remove vars that are set but not used.
4090
4091 * bytecode.c (Fbyte_code) [!defined BYTE_CODE_SAFE]: Remove var
4092 that is set but not used.
4093
4094 * print.c (print_object): Remove var that is set but not used.
4095
4096 Replace 2 copies of readlink code with 1 gnulib version (Bug#8401).
4097 The gnulib version avoids calling malloc in the usual case,
4098 and on 64-bit hosts doesn't have some arbitrary 32-bit limits.
4099 * fileio.c (Ffile_symlink_p): Use emacs_readlink.
4100 * filelock.c (current_lock_owner): Likewise.
4101 * lisp.h (READLINK_BUFSIZE, emacs_readlink): New function.
4102 * sysdep.c: Include allocator.h, careadlinkat.h.
4103 (emacs_no_realloc_allocator): New static constant.
4104 (emacs_readlink): New function.
4105 * deps.mk (sysdep.o): Depend on ../lib/allocator.h and on
4106 ../lib/careadlinkat.h.
4107
4108 2011-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
4109
4110 * keyboard.c (safe_run_hook_funcall): Fix last change (don't stop at the
4111 first non-nil return value).
4112
4113 2011-04-03 Jan Djärv <jan.h.d@swipnet.se>
4114
4115 * nsterm.m (ns_update_auto_hide_menu_bar): Define MAC_OS_X_VERSION_10_6
4116 if not defined (Bug#8403).
4117
4118 2011-04-02 Juanma Barranquero <lekktu@gmail.com>
4119
4120 * xdisp.c (display_count_lines): Remove parameter `start',
4121 unused since 1998-01-01T02:27:27Z!rms@gnu.org. All callers changed.
4122 (get_char_face_and_encoding): Remove parameter `multibyte_p',
4123 unused since 2008-05-14T01:40:23Z!handa@m17n.org. All callers changed.
4124 (fill_stretch_glyph_string): Remove parameters `row' and `area',
4125 unused at least since Kim's GUI unification at 2003-03-16T20:45:46Z!storm@cua.dk
4126 and thereabouts. All callers changed.
4127 (get_per_char_metric): Remove parameter `f', unused since
4128 2008-05-14T01:40:23Z!handa@m17n.org. All callers changed.
4129
4130 2011-04-02 Jim Meyering <meyering@redhat.com>
4131
4132 do not dereference NULL upon failed strdup
4133 * nsfont.m (ns_descriptor_to_entity): Use xstrdup, not strdup.
4134 (ns_get_family): Likewise.
4135
4136 2011-04-02 Juanma Barranquero <lekktu@gmail.com>
4137
4138 * eval.c (unwind_to_catch) [DEBUG_GCPRO]: Remove redundant assignment.
4139
4140 2011-04-02 Jan Djärv <jan.h.d@swipnet.se>
4141
4142 * nsterm.m (ns_update_auto_hide_menu_bar): Only for OSX 10.6 or
4143 later (Bug#8403).
4144
4145 2011-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
4146
4147 Add lexical binding.
4148
4149 * window.c (Ftemp_output_buffer_show): New fun.
4150 (Fsave_window_excursion):
4151 * print.c (Fwith_output_to_temp_buffer): Move to subr.el.
4152
4153 * lread.c (lisp_file_lexically_bound_p): New function.
4154 (Fload): Bind Qlexical_binding.
4155 (readevalloop): Remove `evalfun' arg.
4156 Bind Qinternal_interpreter_environment.
4157 (Feval_buffer): Bind Qlexical_binding.
4158 (defvar_int, defvar_bool, defvar_lisp_nopro, defvar_kboard):
4159 Mark as dynamic.
4160 (syms_of_lread): Declare `lexical-binding'.
4161
4162 * lisp.h (struct Lisp_Symbol): New field `declared_special'.
4163
4164 * keyboard.c (eval_dyn): New fun.
4165 (menu_item_eval_property): Use it.
4166
4167 * image.c (parse_image_spec): Use Ffunctionp.
4168
4169 * fns.c (concat, mapcar1): Accept byte-code-functions.
4170
4171 * eval.c (Fsetq): Handle lexical vars.
4172 (Fdefun, Fdefmacro, Ffunction): Make closures when needed.
4173 (Fdefconst, Fdefvaralias, Fdefvar): Mark as dynamic.
4174 (FletX, Flet): Obey lexical binding.
4175 (Fcommandp): Handle closures.
4176 (Feval): New `lexical' arg.
4177 (eval_sub): New function extracted from Feval. Use it almost
4178 everywhere where Feval was used. Look up vars in lexical env.
4179 Handle closures.
4180 (Ffunctionp): Move from subr.el.
4181 (Ffuncall): Handle closures.
4182 (apply_lambda): Remove `eval_flags'.
4183 (funcall_lambda): Handle closures and new byte-code-functions.
4184 (Fspecial_variable_p): New function.
4185 (syms_of_eval): Initialize the Vinternal_interpreter_environment var,
4186 but without exporting it to Lisp.
4187
4188 * doc.c (Fdocumentation, store_function_docstring):
4189 * data.c (Finteractive_form): Handle closures.
4190
4191 * callint.c (Fcall_interactively): Preserve lexical-binding mode for
4192 interactive spec.
4193
4194 * bytecode.c (Bstack_ref, Bstack_set, Bstack_set2, BdiscardN):
4195 New byte-codes.
4196 (exec_byte_code): New function extracted from Fbyte_code to handle new
4197 calling convention for byte-code-functions. Add new byte-codes.
4198
4199 * buffer.c (defvar_per_buffer): Set new `declared_special' field.
4200
4201 * alloc.c (Fmake_symbol): Init new `declared_special' field.
4202
4203 2011-03-31 Juanma Barranquero <lekktu@gmail.com>
4204
4205 * xdisp.c (redisplay_internal): Fix prototype.
4206
4207 2011-03-31 Eli Zaretskii <eliz@gnu.org>
4208
4209 * xdisp.c (SCROLL_LIMIT): New macro.
4210 (try_scrolling): Use it when setting scroll_limit.
4211 Limit scrolling to 100 screen lines.
4212 (redisplay_window): Even when falling back on "recentering",
4213 position point in the window according to scroll-conservatively,
4214 scroll-margin, and scroll-*-aggressively variables. (Bug#6671)
4215
4216 (try_scrolling): When point is above the window, allow searching
4217 as far as scroll_max, or one screenful, to compute vertical
4218 distance from PT to the scroll margin position. This prevents
4219 try_scrolling from unnecessarily failing when
4220 scroll-conservatively is set to a value slightly larger than the
4221 window height. Clean up the case of PT below the margin at bottom
4222 of window: scroll_max can no longer be INT_MAX. When aggressive
4223 scrolling is in use, don't let point enter the opposite scroll
4224 margin as result of the scroll.
4225 (syms_of_xdisp) <scroll-conservatively>: Document the
4226 threshold of 100 lines for never-recentering scrolling.
4227
4228 2011-03-31 Juanma Barranquero <lekktu@gmail.com>
4229
4230 * dispextern.h (move_it_by_lines):
4231 * xdisp.c (move_it_by_lines): Remove parameter `need_y_p', unused
4232 since 2000-12-29T14:24:09Z!gerd@gnu.org. All callers changed.
4233 (message_log_check_duplicate): Remove parameters `prev_bol' and
4234 `this_bol', unused since 1998-01-01T02:27:27Z!rms@gnu.org. All callers changed.
4235 (redisplay_internal): Remove parameter `preserve_echo_area',
4236 unused since 1999-07-21T21:43:52Z!gerd@gnu.org. All callers changed.
4237
4238 * indent.c (Fvertical_motion):
4239 * window.c (window_scroll_pixel_based, Frecenter):
4240 Don't pass `need_y_p' to `move_it_by_lines'.
4241
4242 2011-03-30 Stefan Monnier <monnier@iro.umontreal.ca>
4243
4244 * eval.c (struct backtrace): Don't cheat with negative numbers, but do
4245 steal a few bits to be more compact.
4246 (interactive_p, Fbacktrace, Fbacktrace_frame, mark_backtrace):
4247 Remove unneeded casts.
4248
4249 * bytecode.c (Fbyte_code): CAR and CDR can GC.
4250
4251 2011-03-30 Zachary Kanfer <zkanfer@gmail.com> (tiny change)
4252
4253 * keyboard.c (Fexecute_extended_command): Do log the "suggest key
4254 binding" message (bug#7967).
4255
4256 2011-03-30 Paul Eggert <eggert@cs.ucla.edu>
4257
4258 Fix more problems found by GCC 4.6.0's static checks.
4259
4260 * unexelf.c (unexec) [! (defined _SYSTYPE_SYSV || defined __sgi)]:
4261 Remove unused local var.
4262
4263 * editfns.c (Fmessage_box): Remove unused local var.
4264
4265 * xdisp.c (try_window_reusing_current_matrix, x_produce_glyphs):
4266 (note_mode_line_or_margin_highlight, note_mouse_highlight):
4267 Omit unused local vars.
4268 * window.c (shrink_windows): Omit unused local var.
4269 * menu.c (digest_single_submenu): Omit unused local var.
4270 * dispnew.c (update_window) [PERIODIC_PREEMPTION_CHECKING]:
4271 Omit unused local var.
4272
4273 * keyboard.c (parse_modifiers_uncached, parse_modifiers):
4274 Don't assume string length fits in int.
4275 (keyremap_step, read_key_sequence): Use size_t for sizes.
4276 (read_key_sequence): Don't check last_real_key_start redundantly.
4277
4278 * callproc.c (Fcall_process, Fcall_process_region): Use SAFE_ALLOCA
4279 instead of alloca (Bug#8344).
4280
4281 * eval.c (Fbacktrace): Don't assume nargs fits in int.
4282 (Fbacktrace_frame): Don't assume nframes fits in int.
4283
4284 * syntax.c (scan_sexps_forward): Avoid pointer wraparound.
4285
4286 * xterm.c (x_make_frame_visible, same_x_server): Redo to avoid overflow
4287 concerns.
4288
4289 * term.c (produce_glyphless_glyph): Remove unnecessary test.
4290
4291 * cm.c (calccost): Turn while-do into do-while, for clarity.
4292
4293 * keyboard.c (syms_of_keyboard): Use the same style as later
4294 in this function when indexing through an array. This also
4295 works around GCC bug 48267.
4296
4297 * image.c (tiff_load): Fix off-by-one image count (Bug#8336).
4298
4299 * xselect.c (x_check_property_data): Return correct size (Bug#8335).
4300
4301 * chartab.c (sub_char_table_ref_and_range): Redo for slight
4302 efficiency gain, and to bypass a gcc -Wstrict-overflow warning.
4303
4304 * keyboard.c, keyboard.h (num_input_events): Now size_t.
4305 This avoids undefined behavior on integer overflow, and is a bit
4306 more convenient anyway since it is compared to a size_t variable.
4307
4308 Variadic C functions now count arguments with size_t, not int.
4309 This avoids an unnecessary limitation on 64-bit machines, which
4310 caused (substring ...) to crash on large vectors (Bug#8344).
4311 * lisp.h (struct Lisp_Subr.function.aMANY): Now takes size_t, not int.
4312 (DEFUN_ARGS_MANY, internal_condition_case_n, safe_call): Likewise.
4313 All variadic functions and their callers changed accordingly.
4314 (struct gcpro.nvars): Now size_t, not int. All uses changed.
4315 * data.c (arith_driver, float_arith_driver): Likewise.
4316 * editfns.c (general_insert_function): Likewise.
4317 * eval.c (struct backtrace.nargs, interactive_p)
4318 (internal_condition_case_n, run_hook_with_args, apply_lambda)
4319 (funcall_lambda, mark_backtrace): Likewise.
4320 * fns.c (concat): Likewise.
4321 * frame.c (x_set_frame_parameters): Likewise.
4322 * fns.c (get_key_arg): Now accepts and returns size_t, and returns
4323 0 if not found, not -1. All callers changed.
4324
4325 * alloc.c (garbage_collect): Don't assume stack size fits in int.
4326 (stack_copy_size): Now size_t, not int.
4327 (stack_copy, stack_copy_size): Define only if MAX_SAVE_STACK > 0.
4328
4329 2011-03-28 Juanma Barranquero <lekktu@gmail.com>
4330
4331 * coding.c (encode_designation_at_bol): Remove parameter `charbuf_end',
4332 unused since 2002-03-01T01:17:24Z!handa@m17n.org and 2008-02-01T16:01:31Z!miles@gnu.org.
4333 All callers changed.
4334
4335 * lisp.h (multibyte_char_to_unibyte):
4336 * character.c (multibyte_char_to_unibyte): Remove parameter `rev_tbl',
4337 unused since 2002-03-01T01:16:34Z!handa@m17n.org and 2008-02-01T16:01:31Z!miles@gnu.org.
4338 * character.h (CHAR_TO_BYTE8):
4339 * cmds.c (internal_self_insert):
4340 * editfns.c (general_insert_function):
4341 * keymap.c (push_key_description):
4342 * search.c (Freplace_match):
4343 * xdisp.c (message_dolog, set_message_1): All callers changed.
4344
4345 2011-03-28 Stefan Monnier <monnier@iro.umontreal.ca>
4346
4347 * keyboard.c (safe_run_hook_funcall): New function.
4348 (safe_run_hooks_1, safe_run_hooks_error, safe_run_hooks): On error,
4349 don't set the hook to nil, but remove the offending function instead.
4350 (Qcommand_hook_internal): Remove, unused.
4351 (syms_of_keyboard): Don't initialize Qcommand_hook_internal nor define
4352 Vcommand_hook_internal.
4353
4354 * eval.c (enum run_hooks_condition): Remove.
4355 (funcall_nil, funcall_not): New functions.
4356 (run_hook_with_args): Call each function through a `funcall' argument.
4357 Remove `cond' argument, now redundant.
4358 (Frun_hooks, Frun_hook_with_args, Frun_hook_with_args_until_success)
4359 (Frun_hook_with_args_until_failure): Adjust accordingly.
4360 (run_hook_wrapped_funcall, Frun_hook_wrapped): New functions.
4361
4362 2011-03-28 Juanma Barranquero <lekktu@gmail.com>
4363
4364 * dispextern.h (string_buffer_position): Remove declaration.
4365
4366 * print.c (strout): Remove parameter `multibyte', unused since
4367 1999-08-21T19:30:21Z!gerd@gnu.org. All callers changed.
4368
4369 * search.c (boyer_moore): Remove parameters `len', `pos' and `lim',
4370 never used since function introduction in 1998-02-08T21:33:56Z!rms@gnu.org.
4371 All callers changed.
4372
4373 * w32.c (_wsa_errlist): Use braces for struct initializers.
4374
4375 * xdisp.c (string_buffer_position_lim): Remove parameter `w',
4376 never used since function introduction in 2001-03-09T18:41:50Z!gerd@gnu.org.
4377 All callers changed.
4378 (string_buffer_position): Likewise. Also, make static (it's never
4379 used outside xdisp.c).
4380 (cursor_row_p): Remove parameter `w', unused since
4381 2000-10-17T16:08:57Z!gerd@gnu.org. All callers changed.
4382 (decode_mode_spec): Remove parameter `precision', introduced during
4383 Gerd Moellmann's rewrite at 1999-07-21T21:43:52Z!gerd@gnu.org, but never used.
4384 All callers changed.
4385
4386 2011-03-27 Jan Djärv <jan.h.d@swipnet.se>
4387
4388 * nsterm.m (syms_of_nsterm): Use doc: for ns-auto-hide-menu-bar.
4389
4390 2011-03-27 Anders Lindgren <andlind@gmail.com>
4391
4392 * nsterm.m (ns_menu_bar_is_hidden): New variable.
4393 (ns_constrain_all_frames, ns_menu_bar_should_be_hidden)
4394 (ns_update_auto_hide_menu_bar): New functions.
4395 (ns_update_begin): Call ns_update_auto_hide_menu_bar.
4396 (applicationDidBecomeActive): Call ns_update_auto_hide_menu_bar and
4397 ns_constrain_all_frames.
4398 (constrainFrameRect): Return at once if ns_menu_bar_should_be_hidden.
4399 (syms_of_nsterm): DEFVAR ns-auto-hide-menu-bar, init to Qnil.
4400
4401 2011-03-27 Jan Djärv <jan.h.d@swipnet.se>
4402
4403 * nsmenu.m (runDialogAt): Remove argument to timer_check.
4404
4405 2011-03-27 Glenn Morris <rgm@gnu.org>
4406
4407 * syssignal.h: Replace RETSIGTYPE with void.
4408 * atimer.c, data.c, dispnew.c, emacs.c, floatfns.c, keyboard.c:
4409 * keyboard.h, lisp.h, process.c, sysdep.c, xterm.c:
4410 Replace SIGTYPE with void everywhere.
4411 * s/usg5-4-common.h (SIGTYPE): Remove definition.
4412 * s/template.h (SIGTYPE): Remove commented out definition.
4413
4414 2011-03-26 Eli Zaretskii <eliz@gnu.org>
4415
4416 * xdisp.c (redisplay_window): Don't check buffer's clip_changed
4417 flag as a prerequisite for invoking try_scrolling. (Bug#6671)
4418
4419 2011-03-26 Juanma Barranquero <lekktu@gmail.com>
4420
4421 * w32.c (read_unc_volume): Use parameter `henum', instead of
4422 global variable `wget_enum_handle'.
4423
4424 * keymap.c (describe_vector): Remove parameters `indices' and
4425 `char_table_depth', unused since 2002-03-01T01:43:26Z!handa@m17n.org.
4426 (describe_map, Fdescribe_vector): Adjust calls to `describe_vector'.
4427
4428 * keyboard.h (timer_check, show_help_echo): Remove unused parameters.
4429
4430 * keyboard.c (timer_check): Remove parameter `do_it_now',
4431 unused since 1996-04-12T06:01:29Z!rms@gnu.org.
4432 (show_help_echo): Remove parameter `ok_to_overwrite_keystroke_echo',
4433 unused since 2008-04-19T19:30:53Z!monnier@iro.umontreal.ca.
4434
4435 * keyboard.c (read_char):
4436 * w32menu.c (w32_menu_display_help):
4437 * xmenu.c (show_help_event, menu_help_callback):
4438 Adjust calls to `show_help_echo'.
4439
4440 * gtkutil.c (xg_maybe_add_timer):
4441 * keyboard.c (readable_events):
4442 * process.c (wait_reading_process_output):
4443 * xmenu.c (x_menu_wait_for_event): Adjust calls to `timer_check'.
4444
4445 * insdel.c (adjust_markers_gap_motion):
4446 Remove; no-op since 1998-01-02T21:29:48Z!rms@gnu.org.
4447 (gap_left, gap_right): Don't call it.
4448
4449 2011-03-25 Chong Yidong <cyd@stupidchicken.com>
4450
4451 * xdisp.c (handle_fontified_prop): Discard changes to clip_changed
4452 incurred during fontification.
4453
4454 2011-03-25 Juanma Barranquero <lekktu@gmail.com>
4455
4456 * buffer.c (defvar_per_buffer): Remove unused parameter `doc'.
4457 (DEFVAR_PER_BUFFER): Don't pass it.
4458
4459 * dispnew.c (row_equal_p, add_row_entry): Remove unused parameter `w'.
4460 (scrolling_window): Don't pass it.
4461
4462 2011-03-25 Juanma Barranquero <lekktu@gmail.com>
4463
4464 * dispextern.h (glyph_matric): Use #if GLYPH_DEBUG, not #ifdef.
4465
4466 * fileio.c (check_executable) [DOS_NT]: Remove unused variables `len'
4467 and `suffix'.
4468 (Fset_file_selinux_context) [HAVE_LIBSELINUX]: Move here declaration
4469 of variables specific to SELinux and computation of `encoded_absname'.
4470
4471 * image.c (XPutPixel): Remove unused variable `height'.
4472
4473 * keyboard.c (make_lispy_event): Remove unused variable `hpos'.
4474
4475 * unexw32.c (get_section_info): Remove unused variable `section'.
4476
4477 * w32.c (stat): Remove unused variables `drive_root' and `devtype'.
4478 (system_process_attributes): Remove unused variable `sess'.
4479 (sys_read): Remove unused variable `err'.
4480
4481 * w32fns.c (top): Wrap variables with #if GLYPH_DEBUG, not #ifdef.
4482 (w32_wnd_proc): Remove unused variable `isdead'.
4483 (unwind_create_frame): Use #if GLYPH_DEBUG, not #ifdef.
4484 (Fx_server_max_request_size): Remove unused variable `dpyinfo'.
4485 (x_create_tip_frame): Remove unused variable `tem'.
4486
4487 * w32inevt.c (w32_console_read_socket):
4488 Remove unused variable `no_events'.
4489
4490 * w32term.c (x_draw_composite_glyph_string_foreground):
4491 Remove unused variable `width'.
4492
4493 2011-03-24 Juanma Barranquero <lekktu@gmail.com>
4494
4495 * w32term.c (x_set_glyph_string_clipping):
4496 Don't pass uninitialized region to CombineRgn.
4497
4498 2011-03-23 Juanma Barranquero <lekktu@gmail.com>
4499
4500 * w32fns.c (x_set_menu_bar_lines): Remove unused variable `olines'.
4501 (w32_wnd_proc): Pass NULL to Windows API, not uninitialized buffer.
4502 (Fx_close_connection): Remove unused variable `i'.
4503
4504 * w32font.c (w32font_draw): Return number of glyphs.
4505 (w32font_open_internal): Remove unused variable `i'.
4506 (w32font_driver): Add missing initializer.
4507
4508 * w32menu.c (utf8to16): Remove unused variable `utf16'.
4509 (fill_in_menu): Remove unused variable `items_added'.
4510
4511 * w32term.c (last_mouse_press_frame): Remove static global variable.
4512 (w32_clip_to_row): Remove unused variable `f'.
4513 (x_delete_terminal): Remove unused variable `i'.
4514
4515 * w32uniscribe.c (uniscribe_shape): Remove unused variable `nclusters'.
4516 (NOTHING): Remove unused static global variable.
4517 (uniscribe_check_otf): Remove unused variable `table'.
4518 (uniscribe_font_driver): Add missing initializers.
4519
4520 2011-03-23 Julien Danjou <julien@danjou.info>
4521
4522 * term.c (Fsuspend_tty, Fresume_tty):
4523 * minibuf.c (read_minibuf, run_exit_minibuf_hook):
4524 * window.c (temp_output_buffer_show):
4525 * insdel.c (signal_before_change):
4526 * frame.c (Fhandle_switch_frame):
4527 * fileio.c (Fdo_auto_save):
4528 * emacs.c (Fkill_emacs):
4529 * editfns.c (save_excursion_restore):
4530 * cmds.c (internal_self_insert):
4531 * callint.c (Fcall_interactively):
4532 * buffer.c (Fkill_all_local_variables):
4533 * keyboard.c (Fcommand_execute, Fsuspend_emacs, safe_run_hooks_1):
4534 Use Frun_hooks.
4535 (command_loop_1): Use Frun_hooks. Call safe_run_hooks
4536 unconditionnaly since it does the check itself.
4537
4538 2011-03-23 Paul Eggert <eggert@cs.ucla.edu>
4539
4540 Fix more problems found by GCC 4.5.2's static checks.
4541
4542 * coding.c (encode_coding_raw_text): Avoid unnecessary test
4543 the first time through the loop, since we know p0 < p1 then.
4544 This also avoids a gcc -Wstrict-overflow warning.
4545
4546 * lisp.h (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Avoid 'int' overflow
4547 leading to a memory leak, possible in functions like
4548 load_charset_map_from_file that can allocate an unbounded number
4549 of objects (Bug#8318).
4550
4551 * xmenu.c (set_frame_menubar): Use EMACS_UINT, not int, for indexes
4552 that could (at least in theory) be that large.
4553
4554 * xdisp.c (message_log_check_duplicate): Return unsigned long, not int.
4555 This is less likely to overflow, and avoids undefined behavior if
4556 overflow does occur. All callers changed. Use strtoul to scan
4557 for the unsigned long integer.
4558 (pint2hrstr): Simplify and tune code slightly.
4559 This also avoids a (bogus) GCC warning with gcc -Wstrict-overflow.
4560
4561 * scroll.c (do_scrolling): Work around GCC bug 48228.
4562 See <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48228>.
4563
4564 * frame.c (Fmodify_frame_parameters): Simplify loop counter.
4565 This also avoids a warning with gcc -Wstrict-overflow.
4566 (validate_x_resource_name): Simplify count usage.
4567 This also avoids a warning with gcc -Wstrict-overflow.
4568
4569 * fileio.c (Fcopy_file): Report error if fchown or fchmod
4570 fail (Bug#8306).
4571
4572 * emacs.c (Fdaemon_initialized): Do not ignore I/O errors (Bug#8303).
4573
4574 * process.c (Fmake_network_process): Use socklen_t, not int,
4575 where POSIX says socklen_t is required in portable programs.
4576 This fixes a porting bug on hosts like 64-bit HP-UX, where
4577 socklen_t is wider than int (Bug#8277).
4578 (Fmake_network_process, server_accept_connection):
4579 (wait_reading_process_output, read_process_output):
4580 Likewise.
4581
4582 * process.c: Rename or move locals to avoid shadowing.
4583 (list_processes_1, Fmake_network_process):
4584 (read_process_output_error_handler, exec_sentinel_error_handler):
4585 Rename or move locals.
4586 (Fmake_network_process): Define label "retry_connect" only if needed.
4587 (Fnetwork_interface_info): Fix pointer signedness.
4588 (process_send_signal): Add cast to avoid pointer signedness problem.
4589 (FIRST_PROC_DESC, IF_NON_BLOCKING_CONNECT): Remove unused macros.
4590 (create_process): Use 'volatile' to avoid vfork clobbering (Bug#8298).
4591
4592 Make tparam.h and terminfo.c consistent.
4593 * cm.c (tputs, tgoto, BC, UP): Remove extern decls.
4594 Include tparam.h instead, since it declares them.
4595 * cm.h (PC): Remove extern decl; tparam.h now does this.
4596 * deps.mk (cm.o, terminfo.o): Depend on tparam.h.
4597 * terminfo.c: Include tparam.h, to check interfaces.
4598 (tparm): Make 1st arg a const pointer in decl. Put it at top level.
4599 (tparam): Adjust signature to match interface in tparam.h;
4600 this removes some undefined behavior. Check that outstring and len
4601 are zero, which they always are with Emacs.
4602 * tparam.h (PC, BC, UP): New extern decls.
4603
4604 * xftfont.c (xftfont_shape): Now static, and defined only if needed.
4605 (xftfont_open): Rename locals to avoid shadowing.
4606
4607 * ftfont.c (ftfont_resolve_generic_family): Fix pointer signedness.
4608 (ftfont_otf_capability, ftfont_shape): Omit decls if not needed.
4609 (OTF_TAG_SYM): Omit macro if not needed.
4610 (ftfont_list): Remove unused local.
4611 (get_adstyle_property, ftfont_pattern_entity):
4612 (ftfont_lookup_cache, ftfont_open, ftfont_anchor_point):
4613 Rename locals to avoid shadowing.
4614
4615 * xfont.c (xfont_list_family): Mark var as initialized.
4616
4617 * xml.c (make_dom): Now static.
4618
4619 * composite.c (composition_compute_stop_pos): Rename local to
4620 avoid shadowing.
4621 (composition_reseat_it): Remove unused locals.
4622 (find_automatic_composition, composition_adjust_point): Likewise.
4623 (composition_update_it): Mark var as initialized.
4624 (find_automatic_composition): Mark vars as initialized,
4625 with a FIXME (Bug#8290).
4626
4627 character.h: Rename locals to avoid shadowing.
4628 * character.h (PREV_CHAR_BOUNDARY, FETCH_STRING_CHAR_ADVANCE):
4629 (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE, FETCH_CHAR_ADVANCE):
4630 (FETCH_CHAR_ADVANCE_NO_CHECK, INC_POS, DEC_POS, BUF_INC_POS):
4631 (BUF_DEC_POS): Be more systematic about renaming local temporaries
4632 to avoid shadowing.
4633
4634 * textprop.c (property_change_between_p): Remove; unused.
4635
4636 * intervals.c (interval_start_pos): Now static.
4637
4638 * intervals.h (CHECK_TOTAL_LENGTH): Avoid empty "else".
4639
4640 * atimer.c (start_atimer, append_atimer_lists, set_alarm):
4641 Rename locals to avoid shadowing.
4642
4643 * sound.c (wav_play, au_play, Fplay_sound_internal):
4644 Fix pointer signedness.
4645 (alsa_choose_format): Remove unused local var.
4646 (wav_play): Initialize a variable to 0, to prevent undefined
4647 behavior (Bug#8278).
4648
4649 * region-cache.c (insert_cache_boundary): Redo var to avoid shadowing.
4650
4651 * region-cache.h (pp_cache): New decl, for gcc -Wmissing-prototypes.
4652
4653 * callproc.c (Fcall_process): Use 'volatile' to avoid vfork
4654 clobbering (Bug#8298).
4655 * sysdep.c (sys_subshell): Likewise.
4656 Previously, the sys_subshell 'volatile' was incorrectly IF_LINTted out.
4657
4658 * lisp.h (child_setup): Now NO_RETURN unless DOS_NT.
4659 This should get cleaned up, so that child_setup has the
4660 same signature on all platforms.
4661
4662 * callproc.c (call_process_cleanup): Now static.
4663 (relocate_fd): Rename locals to avoid shadowing.
4664
4665 2011-03-22 Chong Yidong <cyd@stupidchicken.com>
4666
4667 * xterm.c (x_clear_frame): Remove XClearWindow call. This appears
4668 not to be necessary, and produces flickering.
4669
4670 2011-03-20 Glenn Morris <rgm@gnu.org>
4671
4672 * config.in: Remove file.
4673
4674 2011-03-20 Juanma Barranquero <lekktu@gmail.com>
4675
4676 * minibuf.c (Vcompleting_read_function): Don't declare, global variables
4677 are now in src/globals.h.
4678 (syms_of_minibuf): Remove spurious & from previous change.
4679
4680 2011-03-20 Leo <sdl.web@gmail.com>
4681
4682 * minibuf.c (completing-read-function): New variable.
4683 (completing-read-default): Rename from completing-read.
4684 (completing-read): Call completing-read-function.
4685
4686 2011-03-19 Juanma Barranquero <lekktu@gmail.com>
4687
4688 * xfaces.c (Fx_load_color_file):
4689 Read color file from absolute filename (bug#8250).
4690
4691 2011-03-19 Juanma Barranquero <lekktu@gmail.com>
4692
4693 * makefile.w32-in: Update dependencies.
4694
4695 2011-03-17 Eli Zaretskii <eliz@gnu.org>
4696
4697 * makefile.w32-in ($(BLD)/unexw32.$(O)): Depend on $(SRC)/unexec.h.
4698
4699 2011-03-17 Paul Eggert <eggert@cs.ucla.edu>
4700
4701 Fix more problems found by GCC 4.5.2's static checks.
4702
4703 * process.c (make_serial_process_unwind, send_process_trap):
4704 (sigchld_handler): Now static.
4705
4706 * process.c (allocate_pty): Let PTY_ITERATION declare iteration vars.
4707 That way, the code declares only the vars that it needs.
4708 * s/aix4-2.h (PTY_ITERATION): Declare iteration vars.
4709 * s/cygwin.h (PTY_ITERATION): Likewise.
4710 * s/darwin.h (PTY_ITERATION): Likewise.
4711 * s/gnu-linux.h (PTY_ITERATION): Likewise.
4712
4713 * s/irix6-5.h (PTY_OPEN): Declare stb, to loosen coupling.
4714 * process.c (allocate_pty): Don't declare stb unless it's needed.
4715
4716 * bytecode.c (MAYBE_GC): Rewrite so as not to use empty "else".
4717 (CONSTANTLIM): Remove; unused.
4718 (METER_CODE, Bscan_buffer, Bread_char, Bset_mark):
4719 Define only if needed.
4720
4721 * unexelf.c (unexec): Name an expression,
4722 to avoid gcc -Wbad-function-cast warning.
4723 Use a different way to cause a compilation error if anyone uses
4724 n rather than nn, a way that does not involve shadowing.
4725 (ELF_BSS_SECTION_NAME, OLD_PROGRAM_H): Remove; unused.
4726
4727 * deps.mk (unexalpha.o): Remove; unused.
4728
4729 New file unexec.h, the (simple) interface for unexec (Bug#8267).
4730 * unexec.h: New file.
4731 * deps.mk (emacs.o, unexaix.o, unexcw.o, unexcoff.o, unexelf.o):
4732 (unexhp9k800.o, unexmacosx.o, unexsol.o, unexw32.o):
4733 Depend on unexec.h.
4734 * emacs.c [!defined CANNOT_DUMP]: Include unexec.h.
4735 * unexaix.c, unexcoff.c, unexcw.c, unexelf.c, unexhp9k800.c:
4736 * unexmacosx.c, unexsol.c, unexw32.c: Include unexec.h.
4737 Change as necessary to match prototype in unexec.h.
4738
4739 * syntax.c (Fforward_comment, scan_lists): Rename locals to avoid
4740 shadowing.
4741 (back_comment, skip_chars): Mark vars as initialized.
4742
4743 * character.h (FETCH_STRING_CHAR_ADVANCE_NO_CHECK, BUF_INC_POS):
4744 Rename locals to avoid shadowing.
4745
4746 * lread.c (read1): Rewrite so as not to use empty "else".
4747 (Fload, readevalloop, read1): Rename locals to avoid shadowing.
4748
4749 * print.c (Fredirect_debugging_output): Fix pointer signedess.
4750
4751 * lisp.h (debug_output_compilation_hack): Add decl here, to avoid
4752 warning when compiling print.c.
4753
4754 * font.c (font_unparse_fcname): Abort in an "impossible" situation
4755 instead of using an uninitialized var.
4756 (font_sort_entities): Mark var as initialized.
4757
4758 * character.h (FETCH_CHAR_ADVANCE): Rename locals to avoid shadowing.
4759
4760 * font.c (font_unparse_xlfd): Don't mix pointers to variables with
4761 pointers to constants.
4762 (font_parse_fcname): Remove unused vars.
4763 (font_delete_unmatched): Now static.
4764 (font_get_spec): Remove; unused.
4765 (font_style_to_value, font_prop_validate_style, font_unparse_fcname):
4766 (font_update_drivers, Ffont_get_glyphs, font_add_log):
4767 Rename or move locals to avoid shadowing.
4768
4769 * fns.c (require_nesting_list, require_unwind): Now static.
4770 (Ffillarray): Rename locals to avoid shadowing.
4771
4772 * floatfns.c (domain_error2): Define only if needed.
4773 (Ffrexp, Fldexp): Rename locals to avoid shadowing.
4774
4775 * alloc.c (mark_backtrace): Move decl from here ...
4776 * lisp.h: ... to here, so that it can be checked.
4777
4778 * eval.c (call_debugger, do_debug_on_call, grow_specpdl): Now static.
4779 (Fdefvar): Rewrite so as not to use empty "else".
4780 (lisp_indirect_variable): Name an expression,
4781 to avoid gcc -Wbad-function-cast warning.
4782 (Fdefvar): Rename locals to avoid shadowing.
4783
4784 * callint.c (quotify_arg, quotify_args): Now static.
4785 (Fcall_interactively): Rename locals to avoid shadowing.
4786 Use const pointer when appropriate.
4787
4788 * lisp.h (get_system_name, get_operating_system_release):
4789 Move decls here, to check interfaces.
4790 * process.c (get_operating_system_release): Move decl to lisp.h.
4791 * xrdb.c (get_system_name): Likewise.
4792 * editfns.c (init_editfns, Fuser_login_name, Fuser_uid):
4793 (Fuser_real_uid, Fuser_full_name): Remove unnecessary casts,
4794 some of which prompt warnings from gcc -Wbad-function-cast.
4795 (Fformat_time_string, Fencode_time, Finsert_char):
4796 (Ftranslate_region_internal, Fformat):
4797 Rename or remove local vars to avoid shadowing.
4798 (Ftranslate_region_internal): Mark var as initialized.
4799
4800 * doc.c (Fdocumentation, Fsnarf_documentation): Move locals to
4801 avoid shadowing.
4802
4803 * lisp.h (eassert): Check that the argument compiles, even if
4804 ENABLE_CHECKING is not defined.
4805
4806 * data.c (Findirect_variable): Name an expression, to avoid
4807 gcc -Wbad-function-cast warning.
4808 (default_value, arithcompare, arith_driver, arith_error): Now static.
4809 (store_symval_forwarding): Rename local to avoid shadowing.
4810 (Fmake_variable_buffer_local, Fmake_local_variable):
4811 Mark variables as initialized.
4812 (do_blv_forwarding, do_symval_forwarding): Remove; unused.
4813
4814 * alloc.c (check_cons_list): Do not define unless GC_CHECK_CONS_LIST.
4815 (Fmake_vector, Fvector, Fmake_byte_code, Fgarbage_collect):
4816 Rename locals to avoid shadowing.
4817 (mark_stack): Move local variables into the #ifdef region where
4818 they're used.
4819 (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Define only if
4820 ! defined SYSTEM_MALLOC && ! defined SYNC_INPUT, as they are not
4821 needed otherwise.
4822 (CHECK_ALLOCATED): Define only if GC_CHECK_MARKED_OBJECTS.
4823 (GC_STRING_CHARS): Remove; not used.
4824 (Fmemory_limit): Cast sbrk's returned value to char *.
4825
4826 * lisp.h (check_cons_list): Declare if GC_CHECK_CONS_LIST; this
4827 avoids undefined behavior in theory.
4828
4829 * regex.c (IF_LINT): Add defn, for benefit of ../lib-src.
4830
4831 Use functions, not macros, for up- and down-casing (Bug#8254).
4832 * buffer.h (DOWNCASE_TABLE, UPCASE_TABLE, DOWNCASE, UPPERCASEP):
4833 (NOCASEP, LOWERCASEP, UPCASE, UPCASE1): Remove. All callers changed
4834 to use the following functions instead of these macros.
4835 (downcase): Adjust to lack of DOWNCASE_TABLE. Return int, not
4836 EMACS_INT, since callers assume the returned value fits in int.
4837 (upcase1): Likewise, for UPCASE_TABLE.
4838 (uppercasep, lowercasep, upcase): New static inline functions.
4839 * editfns.c (Fchar_equal): Remove no-longer-needed workaround for
4840 the race-condition problem in the old DOWNCASE.
4841
4842 * regex.c (CHARSET_LOOKUP_RANGE_TABLE_RAW, POP_FAILURE_REG_OR_COUNT):
4843 Rename locals to avoid shadowing.
4844 (regex_compile, re_match_2_internal): Move locals to avoid shadowing.
4845 (regex_compile, re_search_2, re_match_2_internal):
4846 Remove unused local vars.
4847 (FREE_VAR): Rewrite so as not to use empty "else",
4848 which gcc can warn about.
4849 (regex_compile, re_match_2_internal): Mark locals as initialized.
4850 (RETALLOC_IF): Define only if needed.
4851 (WORDCHAR_P): Likewise. This one is never needed, but is used
4852 only in a comment talking about a compiler bug, so put inside
4853 the #if 0 of that comment.
4854 (CHARSET_LOOKUP_BITMAP, FAIL_STACK_FULL, RESET_FAIL_STACK):
4855 (PUSH_FAILURE_ELT, BUF_PUSH_3, STOP_ADDR_VSTRING):
4856 Remove; unused.
4857
4858 * search.c (boyer_moore): Rename locals to avoid shadowing.
4859 * character.h (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE):
4860 (PREV_CHAR_BOUNDARY): Likewise.
4861
4862 * search.c (simple_search): Remove unused var.
4863
4864 * dired.c (compile_pattern): Move decl from here ...
4865 * lisp.h: ... to here, so that it can be checked.
4866 (struct re_registers): New forward decl.
4867
4868 * character.h (INC_POS, DEC_POS): Rename locals to avoid shadowing.
4869
4870 * indent.c (MULTIBYTE_BYTES_WIDTH): New args bytes, width.
4871 All uses changed.
4872 (MULTIBYTE_BYTES_WIDTH, scan_for_column, compute_motion):
4873 Rename locals to avoid shadowing.
4874 (Fvertical_motion): Mark locals as initialized.
4875
4876 * casefiddle.c (casify_object, casify_region): Now static.
4877 (casify_region): Mark local as initialized.
4878
4879 * cmds.c (internal_self_insert): Rename local to avoid shadowing.
4880
4881 * lisp.h (GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR, GCPRO5_VAR, GCPRO6_VAR):
4882 New macros, so that the caller can use some names other than
4883 gcpro1, gcpro2, etc.
4884 (GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6): Reimplement in terms
4885 of the new macros.
4886 (GCPRO1_VAR, UNGCPRO_VAR): Change the meaning of the second
4887 argument, for consistency with GCPRO2_VAR, etc: it is now the
4888 prefix of the variable, not the variable itself. All uses
4889 changed.
4890 * dired.c (directory_files_internal, file_name_completion):
4891 Rename locals to avoid shadowing.
4892
4893 Fix a race condition diagnosed by gcc -Wsequence-point (Bug#8254).
4894 An expression of the form (DOWNCASE (x) == DOWNCASE (y)), found in
4895 dired.c's scmp function, had undefined behavior.
4896 * lisp.h (DOWNCASE_TABLE, UPCASE_TABLE, DOWNCASE, UPPERCASEP):
4897 (NOCASEP, LOWERCASEP, UPCASE, UPCASE1): Move from here ...
4898 * buffer.h: ... to here, because these macros use current_buffer,
4899 and the new implementation with inline functions needs to have
4900 current_buffer in scope now, rather than later when the macros
4901 are used.
4902 (downcase, upcase1): New static inline functions.
4903 (DOWNCASE, UPCASE1): Reimplement using these functions.
4904 This avoids undefined behavior in expressions like
4905 DOWNCASE (x) == DOWNCASE (y), which previously suffered
4906 from race conditions in accessing the global variables
4907 case_temp1 and case_temp2.
4908 * casetab.c (case_temp1, case_temp2): Remove; no longer needed.
4909 * lisp.h (case_temp1, case_temp2): Remove their decls.
4910 * character.h (ASCII_CHAR_P): Move from here ...
4911 * lisp.h: ... to here, so that the inline functions mentioned
4912 above can use them.
4913
4914 * dired.c (directory_files_internal_unwind): Now static.
4915
4916 * fileio.c (file_name_as_directory, directory_file_name):
4917 (barf_or_query_if_file_exists, auto_save_error, auto_save_1):
4918 Now static.
4919 (file_name_as_directory): Use const pointers when appropriate.
4920 (Fexpand_file_name): Likewise. In particular, newdir might
4921 point at constant storage, so make it a const pointer.
4922 (Fmake_directory_internal, Fread_file_name): Remove unused vars.
4923 (Ffile_selinux_context, Fset_file_selinux_context): Fix pointer
4924 signedness issues.
4925 (Fset_file_times, Finsert_file_contents, auto_save_error):
4926 Rename locals to avoid shadowing.
4927
4928 * minibuf.c (choose_minibuf_frame_1): Now static.
4929 (Ftry_completion, Fall_completions): Rename or remove locals
4930 to avoid shadowing.
4931
4932 * marker.c (bytepos_to_charpos): Remove; unused.
4933
4934 * lisp.h (verify_bytepos, count_markers): New decls,
4935 so that gcc does not warn that these functions aren't declared.
4936
4937 * insdel.c (check_markers, make_gap_larger, make_gap_smaller):
4938 (reset_var_on_error, Fcombine_after_change_execute_1): Now static.
4939 (CHECK_MARKERS): Redo to avoid gcc -Wempty-body diagnostic.
4940 (copy_text): Remove unused local var.
4941
4942 * filelock.c (within_one_second): Now static.
4943 (lock_file_1): Rename local to avoid shadowing.
4944
4945 * buffer.c (fix_overlays_before): Mark locals as initialized.
4946 (fix_start_end_in_overlays): Likewise. This function should be
4947 simplified by using pointers-to-pointers, but that's a different
4948 matter.
4949 (switch_to_buffer_1): Now static.
4950 (Fkill_buffer, record_buffer, Fbury_buffer, Fset_buffer_multibyte):
4951 (report_overlay_modification): Rename locals to avoid shadowing.
4952
4953 * sysdep.c (system_process_attributes): Rename vars to avoid shadowing.
4954 Fix pointer signedness issue.
4955 (sys_subshell): Mark local as volatile if checking for lint,
4956 to suppress a gcc -Wclobbered warning that does not seem to be right.
4957 (MAXPATHLEN): Define only if needed.
4958
4959 * process.c (serial_open, serial_configure): Move decls from here ...
4960 * systty.h: ... to here, so that they can be checked.
4961
4962 * fns.c (get_random, seed_random): Move extern decls from here ...
4963 * lisp.h: ... to here, so that they can be checked.
4964
4965 * sysdep.c (reset_io): Now static.
4966 (wait_for_termination_signal): Remove; unused.
4967
4968 * keymap.c (keymap_parent, keymap_memberp, map_keymap_internal):
4969 (copy_keymap_item, append_key, push_text_char_description):
4970 Now static.
4971 (Fwhere_is_internal): Don't test CONSP (sequences) unnecessarily.
4972 (DENSE_TABLE_SIZE): Remove; unused.
4973 (get_keymap, access_keymap, Fdefine_key, Fwhere_is_internal):
4974 (describe_map_tree):
4975 Rename locals to avoid shadowing.
4976
4977 * keyboard.c: Declare functions static if they are not used elsewhere.
4978 (echo_char, echo_dash, cmd_error, top_level_2):
4979 (poll_for_input, handle_async_input): Now static.
4980 (read_char, kbd_buffer_get_event, make_lispy_position):
4981 (make_lispy_event, make_lispy_movement, apply_modifiers):
4982 (decode_keyboard_code, tty_read_avail_input, menu_bar_items):
4983 (parse_tool_bar_item, read_key_sequence, Fread_key_sequence):
4984 (Fread_key_sequence_vector): Rename locals to avoid shadowing.
4985 (read_key_sequence, read_char): Mark locals as initialized.
4986 (Fexit_recursive_edit, Fabort_recursive_edit): Mark with NO_RETURN.
4987
4988 * keyboard.h (make_ctrl_char): New decl.
4989 (mark_kboards): Move decl here ...
4990 * alloc.c (mark_kboards): ... from here.
4991
4992 * lisp.h (force_auto_save_soon): New decl.
4993
4994 * emacs.c (init_cmdargs): Rename local to avoid shadowing.
4995 (DEFINE_DUMMY_FUNCTION): New macro.
4996 (__do_global_ctors, __do_global_ctors_aux, __do_global_dtors, __main):
4997 Use it.
4998 (main): Add casts to avoid warnings
4999 if GCC considers string literals to be constants.
5000
5001 * lisp.h (fatal_error_signal): Add decl, since it's exported.
5002
5003 * dbusbind.c: Pointer signedness fixes.
5004 (xd_signature, xd_append_arg, xd_initialize):
5005 (Fdbus_call_method, Fdbus_call_method_asynchronously):
5006 (Fdbus_method_return_internal, Fdbus_method_error_internal):
5007 (Fdbus_send_signal, xd_read_message_1, Fdbus_register_service):
5008 (Fdbus_register_signal): Use SSDATA when the context wants char *.
5009
5010 * dbusbind.c (Fdbus_init_bus): Add cast to avoid warning
5011 if GCC considers string literals to be constants.
5012 (Fdbus_register_service, Fdbus_register_method): Remove unused vars.
5013
5014 2011-03-16 Stefan Monnier <monnier@iro.umontreal.ca>
5015
5016 * print.c (PRINT_CIRCLE_CANDIDATE_P): New macro.
5017 (print_preprocess, print_object): New macro to fix last change.
5018
5019 * print.c (print_preprocess): Don't forget font objects.
5020
5021 2011-03-16 Juanma Barranquero <lekktu@gmail.com>
5022
5023 * emacs.c (USAGE3): Doc fixes.
5024
5025 2011-03-15 Andreas Schwab <schwab@linux-m68k.org>
5026
5027 * coding.c (detect_coding_iso_2022): Reorganize code to clarify
5028 structure.
5029
5030 2011-03-14 Juanma Barranquero <lekktu@gmail.com>
5031
5032 * lisp.h (VWindow_system, Qfile_name_history):
5033 * keyboard.h (lispy_function_keys) [WINDOWSNT]:
5034 * w32term.h (w32_system_caret_hwnd, w32_system_caret_height)
5035 (w32_system_caret_x, w32_system_caret_y): Declare extern.
5036
5037 * w32select.c: Don't #include "keyboard.h".
5038 (run_protected): Add extern declaration for waiting_for_input.
5039
5040 * w32.c (Qlocal, noninteractive1, inhibit_window_system):
5041 * w32console.c (detect_input_pending, read_input_pending)
5042 (encode_terminal_code):
5043 * w32fns.c (quit_char, lispy_function_keys, Qtooltip)
5044 (w32_system_caret_hwnd, w32_system_caret_height, w32_system_caret_x)
5045 (w32_system_caret_y, Qfile_name_history):
5046 * w32font.c (w32font_driver, QCantialias, QCotf, QClang):
5047 * w32inevt.c (reinvoke_input_signal, lispy_function_keys):
5048 * w32menu.c (Qmenu_bar, QCtoggle, QCradio, Qoverriding_local_map)
5049 (Qoverriding_terminal_local_map, Qmenu_bar_update_hook):
5050 * w32proc.c (Qlocal, report_file_error):
5051 * w32term.c (Vwindow_system, updating_frame):
5052 * w32uniscribe.c (initialized, uniscribe_font_driver):
5053 Remove unneeded extern declarations.
5054
5055 2011-03-14 Chong Yidong <cyd@stupidchicken.com>
5056
5057 * buffer.c (Fmake_indirect_buffer): Fix incorrect assertions.
5058
5059 2011-03-13 Chong Yidong <cyd@stupidchicken.com>
5060
5061 * buffer.h (BUF_BEGV, BUF_BEGV_BYTE, BUF_ZV, BUF_ZV_BYTE, BUF_PT)
5062 (BUF_PT_BYTE): Rewrite to handle indirect buffers (Bug#8219).
5063 These macros can no longer be used for assignment.
5064
5065 * buffer.c (Fget_buffer_create, Fmake_indirect_buffer):
5066 Assign struct members directly, instead of using BUF_BEGV etc.
5067 (record_buffer_markers, fetch_buffer_markers): New functions for
5068 recording and fetching special buffer markers.
5069 (set_buffer_internal_1, set_buffer_temp): Use them.
5070
5071 * lread.c (unreadchar): Use SET_BUF_PT_BOTH.
5072
5073 * insdel.c (adjust_point): Use SET_BUF_PT_BOTH.
5074
5075 * intervals.c (temp_set_point_both): Use SET_BUF_PT_BOTH.
5076 (get_local_map): Use SET_BUF_BEGV_BOTH and SET_BUF_ZV_BOTH.
5077
5078 * xdisp.c (hscroll_window_tree):
5079 (reconsider_clip_changes): Use PT instead of BUF_PT.
5080
5081 2011-03-13 Eli Zaretskii <eliz@gnu.org>
5082
5083 * makefile.w32-in ($(BLD)/editfns.$(O)): Depend on
5084 $(EMACS_ROOT)/lib/intprops.h.
5085
5086 2011-03-13 Paul Eggert <eggert@cs.ucla.edu>
5087
5088 Fix more problems found by GCC 4.5.2's static checks.
5089
5090 * gtkutil.c (xg_get_pixbuf_from_pixmap): Add cast from char *
5091 to unsigned char * to avoid compiler diagnostic.
5092 (xg_free_frame_widgets): Make it clear that a local variable is
5093 needed only if USE_GTK_TOOLTIP.
5094 (gdk_window_get_screen): Make it clear that this macro is needed
5095 only if USE_GTK_TOOLTIP.
5096 (int_gtk_range_get_value): New function, which avoids a diagnostic
5097 from gcc -Wbad-function-cast.
5098 (xg_set_toolkit_scroll_bar_thumb): Use it.
5099 (xg_tool_bar_callback, xg_tool_item_stale_p): Rewrite to avoid
5100 diagnostic from gcc -Wbad-function-cast.
5101 (get_utf8_string, xg_get_file_with_chooser):
5102 Rename locals to avoid shadowing.
5103 (create_dialog): Move locals to avoid shadowing.
5104
5105 * xgselect.c (xg_select): Remove unused var.
5106
5107 * image.c (four_corners_best): Mark locals as initialized.
5108 (gif_load): Initialize transparent_p to zero (Bug#8238).
5109 Mark another local as initialized.
5110 (my_png_error, my_error_exit): Mark with NO_RETURN.
5111
5112 * image.c (clear_image_cache): Now static.
5113 (DIM, HAVE_STDLIB_H_1): Remove unused macros.
5114 (xpm_load): Redo to avoid "discards qualifiers" gcc warning.
5115 (x_edge_detection): Remove unnecessary cast that
5116 gcc -Wbad-function-cast diagnoses.
5117 (gif_load): Fix pointer signedness.
5118 (clear_image_cache, xbm_read_bitmap_data, x_detect_edges):
5119 (jpeg_load, gif_load): Rename locals to avoid shadowing.
5120
5121 2011-03-12 Paul Eggert <eggert@cs.ucla.edu>
5122
5123 Improve quality of tests for time stamp overflow.
5124 For example, without this patch (encode-time 0 0 0 1 1
5125 1152921504606846976) returns the obviously-bogus value (-948597
5126 62170) on my RHEL 5.5 x86-64 host. With the patch, it correctly
5127 reports time overflow. See
5128 <http://lists.gnu.org/archive/html/emacs-devel/2011-03/msg00470.html>.
5129 * deps.mk (editfns.o): Depend on ../lib/intprops.h.
5130 * editfns.c: Include limits.h and intprops.h.
5131 (TIME_T_MIN, TIME_T_MAX): New macros.
5132 (time_overflow): Move earlier, to before first use.
5133 (hi_time, lo_time): New functions, for an accurate test for
5134 out-of-range times.
5135 (Fcurrent_time, Fget_internal_run_time, make_time): Use them.
5136 (Fget_internal_run_time): Don't assume time_t fits in int.
5137 (make_time): Use list2 instead of Fcons twice.
5138 (Fdecode_time): More accurate test for out-of-range times.
5139 (check_tm_member): New function.
5140 (Fencode_time): Use it, to test for out-of-range times.
5141 (lisp_time_argument): Don't rely on undefined left-shift and
5142 right-shift behavior when checking for time stamp overflow.
5143
5144 * editfns.c (time_overflow): New function, refactoring common code.
5145 (Fformat_time_string, Fdecode_time, Fencode_time):
5146 (Fcurrent_time_string): Use it.
5147
5148 Move 'make_time' to be next to its inverse 'lisp_time_argument'.
5149 * dired.c (make_time): Move to ...
5150 * editfns.c (make_time): ... here.
5151 * systime.h: Note the move.
5152
5153 2011-03-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
5154
5155 * fringe.c (update_window_fringes): Remove unused variables.
5156
5157 * unexmacosx.c (copy_data_segment): Also copy __got section.
5158 (Bug#8223)
5159
5160 2011-03-12 Eli Zaretskii <eliz@gnu.org>
5161
5162 * termcap.c [MSDOS]: Include "msdos.h".
5163 (find_capability, tgetnum, tgetflag, tgetstr, tputs, tgetent):
5164 Constify `char *' arguments and their references according to
5165 prototypes in tparam.h.
5166
5167 * deps.mk (termcap.o): Depend on tparam.h and msdos.h.
5168
5169 * msdos.c (XMenuAddPane): 3rd argument is `const char *' now.
5170 Adapt all references accordingly.
5171
5172 * msdos.h (XMenuAddPane): 3rd argument is `const char *' now.
5173
5174 2011-03-11 Tom Tromey <tromey@redhat.com>
5175
5176 * buffer.c (syms_of_buffer): Remove obsolete comment.
5177
5178 2011-03-11 Eli Zaretskii <eliz@gnu.org>
5179
5180 * termhooks.h (encode_terminal_code): Declare prototype.
5181
5182 * msdos.c (encode_terminal_code): Don't declare prototype.
5183
5184 * term.c (encode_terminal_code): Now external again, used by
5185 w32console.c and msdos.c.
5186
5187 * makefile.w32-in ($(BLD)/term.$(O), ($(BLD)/tparam.$(O)):
5188 Depend on $(SRC)/tparam.h, see 2011-03-11T07:24:21Z!eggert@cs.ucla.edu.
5189
5190 2011-03-11 Paul Eggert <eggert@cs.ucla.edu>
5191
5192 Fix some minor problems found by GCC 4.5.2's static checks.
5193
5194 * fringe.c (update_window_fringes): Mark locals as initialized
5195 (Bug#8227).
5196 (destroy_fringe_bitmap, init_fringe_bitmap): Now static.
5197
5198 * alloc.c (mark_fringe_data): Move decl from here ...
5199 * lisp.h (mark_fringe_data) [HAVE_WINDOW_SYSTEM]: ... to here,
5200 to check its interface.
5201 (init_fringe_once): Do not declare unless HAVE_WINDOW_SYSTEM.
5202
5203 * fontset.c (free_realized_fontset): Now static.
5204 (Fset_fontset_font): Rename local to avoid shadowing.
5205 (fontset_font): Mark local as initialized.
5206 (FONTSET_SPEC, FONTSET_REPERTORY, RFONT_DEF_REPERTORY): Remove; unused.
5207
5208 * xrdb.c: Include "xterm.h", to check x_load_resources's interface.
5209
5210 * xselect.c (x_disown_buffer_selections): Remove; not used.
5211 (TRACE3) [!defined TRACE_SELECTION]: Remove; not used.
5212 (x_own_selection, Fx_disown_selection_internal): Rename locals
5213 to avoid shadowing.
5214 (x_handle_dnd_message): Remove local to avoid shadowing.
5215
5216 * lisp.h (GCPRO1_VAR, UNGCPRO_VAR): New macros,
5217 so that the caller can use some name other than gcpro1.
5218 (GCPRO1, UNGCPRO): Reimplement in terms of the new macros.
5219 * xfns.c (Fx_create_frame, x_create_tip_frame, Fx_show_tip):
5220 (Fx_backspace_delete_keys_p):
5221 Use them to avoid shadowing, and rename vars to avoid shadowing.
5222 (x_decode_color, x_set_name, x_window): Now static.
5223 (Fx_create_frame): Add braces to silence GCC warning.
5224 (Fx_file_dialog, Fx_select_font): Fix pointer signedness.
5225 (x_real_positions, xg_set_icon_from_xpm_data, x_create_tip_frame):
5226 Remove unused locals.
5227 (Fx_create_frame, x_create_tip_frame, Fx_show_tip):
5228 (Fx_backspace_delete_keys_p): Rename locals to avoid shadowing.
5229 Some of these renamings use the new GCPRO1_VAR and UNGCPRO_VAR
5230 macros.
5231
5232 * xterm.h (x_mouse_leave): New decl.
5233
5234 * xterm.c (x_copy_dpy_color, x_focus_on_frame, x_unfocus_frame):
5235 Remove unused functions.
5236 (x_shift_glyphs_for_insert, XTflash, XTring_bell):
5237 (x_calc_absolute_position): Now static.
5238 (XTread_socket): Don't define label "out" unless it's used.
5239 Don't declare local "event" unless it's used.
5240 (x_iconify_frame, x_free_frame_resources): Don't declare locals
5241 unless they are used.
5242 (XEMBED_VERSION, xembed_set_info): Don't define unless needed.
5243 (x_fatal_error_signal): Remove; not used.
5244 (x_draw_image_foreground, redo_mouse_highlight, XTmouse_position):
5245 (x_scroll_bar_report_motion, handle_one_xevent, x_draw_bar_cursor):
5246 (x_error_catcher, x_connection_closed, x_error_handler):
5247 (x_error_quitter, xembed_send_message, x_iconify_frame):
5248 (my_log_handler): Rename locals to avoid shadowing.
5249 (x_delete_glyphs, x_ins_del_lines): Mark with NO_RETURN.
5250 (x_connection_closed): Tell GCC not to suggest NO_RETURN.
5251
5252 * xfaces.c (clear_face_cache, Fx_list_fonts, Fface_font):
5253 Rename or move locals to avoid shadowing.
5254 (tty_defined_color, merge_face_heights): Now static.
5255 (free_realized_faces_for_fontset): Remove; not used.
5256 (Fx_list_fonts): Mark variable that gcc -Wuninitialized
5257 does not deduce is never used uninitialized.
5258 (STRDUPA, LSTRDUPA, FONT_POINT_SIZE_QUANTUM): Remove; not used.
5259 (LFACEP): Define only if XASSERTS, as it's not needed otherwise.
5260
5261 * terminal.c (store_terminal_param): Now static.
5262
5263 * xmenu.c (menu_highlight_callback): Now static.
5264 (set_frame_menubar): Remove unused local.
5265 (xmenu_show): Rename parameter to avoid shadowing.
5266 (xmenu_show, xdialog_show, xmenu_show): Make local pointers "const"
5267 since they might point to immutable storage.
5268 (next_menubar_widget_id): Declare only if USE_X_TOOLKIT,
5269 since it's unused otherwise.
5270
5271 * xdisp.c (produce_glyphless_glyph): Initialize lower_xoff.
5272 Add a FIXME, since the code still doesn't look right. (Bug#8215)
5273 (Fcurrent_bidi_paragraph_direction): Simplify slightly; this
5274 avoids a gcc -Wuninitialized diagnostic.
5275 (display_line, BUILD_COMPOSITE_GLYPH_STRING, draw_glyphs):
5276 (note_mouse_highlight): Mark variables that gcc -Wuninitialized
5277 does not deduce are never used uninitialized.
5278
5279 * lisp.h (IF_LINT): New macro, copied from ../lib-src/emacsclient.c.
5280
5281 * xdisp.c (redisplay_window): Rename local to avoid shadowing.
5282 * window.c (window_loop, size_window):
5283 (run_window_configuration_change_hook, enlarge_window): Likewise.
5284
5285 * window.c (display_buffer): Now static.
5286 (size_window): Mark variables that gcc -Wuninitialized
5287 does not deduce are never used uninitialized.
5288 * window.h (check_all_windows): New decl, to forestall
5289 gcc -Wmissing-prototypes diagnostic.
5290 * dispextern.h (bidi_dump_cached_states): Likewise.
5291
5292 * charset.h (CHECK_CHARSET_GET_CHARSET): Rename locals to avoid
5293 shadowing.
5294 * charset.c (map_charset_for_dump, Fchar_charset): Likewise.
5295 Include <limits.h>.
5296 (Fsort_charsets): Redo min/max calculation to shorten the code a bit
5297 and to avoid gcc -Wuninitialized warning.
5298 (load_charset_map): Mark variables that gcc -Wuninitialized
5299 does not deduce are never used uninitialized.
5300 (load_charset): Abort instead of using uninitialized var (Bug#8229).
5301
5302 * coding.c (coding_set_source, coding_set_destination):
5303 Use "else { /* comment */ }" rather than "else /* comment */;"
5304 for clarity, and to avoid gcc -Wempty-body warning.
5305 (Fdefine_coding_system_internal): Don't redeclare 'i' inside
5306 a block, when the outer 'i' will do.
5307 (decode_coding_utf_8, decode_coding_utf_16, detect_coding_emacs_mule):
5308 (emacs_mule_char, decode_coding_emacs_mule, detect_coding_iso_2022):
5309 (decode_coding_iso_2022, decode_coding_sjis, decode_coding_big5):
5310 (decode_coding_raw_text, decode_coding_charset, get_translation_table):
5311 (Fdecode_sjis_char, Fdefine_coding_system_internal):
5312 Rename locals to avoid shadowing.
5313 * character.h (FETCH_STRING_CHAR_ADVANCE): Likewise.
5314 * coding.c (emacs_mule_char, encode_invocation_designation):
5315 Now static, since they're not used elsewhere.
5316 (decode_coding_iso_2022): Add "default: abort ();" as a safety check.
5317 (decode_coding_object, encode_coding_object, detect_coding_system):
5318 (decode_coding_emacs_mule): Mark variables that gcc
5319 -Wuninitialized does not deduce are never used uninitialized.
5320 (detect_coding_iso_2022): Initialize a local variable that might
5321 be used uninitialized. Leave a FIXME because it's not clear that
5322 this initialization is needed. (Bug#8211)
5323 (ISO_CODE_LF, ISO_CODE_CR, CODING_ISO_FLAG_EUC_TW_SHIFT):
5324 (ONE_MORE_BYTE_NO_CHECK, UTF_BOM, UTF_16_INVALID_P):
5325 (SHIFT_OUT_OK, ENCODE_CONTROL_SEQUENCE_INTRODUCER):
5326 (ENCODE_DIRECTION_R2L, ENCODE_DIRECTION_L2R):
5327 Remove unused macros.
5328
5329 * category.c (hash_get_category_set): Remove unused local var.
5330 (copy_category_table): Now static, since it's not used elsewhere.
5331 * character.c (string_count_byte8): Likewise.
5332
5333 * ccl.c (CCL_WRITE_STRING, CCL_ENCODE_CHAR, Fccl_execute_on_string):
5334 (Fregister_code_conversion_map): Rename locals to avoid shadowing.
5335
5336 * chartab.c (copy_sub_char_table): Now static, since it's not used
5337 elsewhere.
5338 (sub_char_table_ref_and_range, char_table_ref_and_range):
5339 Rename locals to avoid shadowing.
5340 (ASET_RANGE, GET_SUB_CHAR_TABLE): Remove unused macros.
5341
5342 * bidi.c (bidi_check_type): Now static, since it's not used elsewhere.
5343 (BIDI_BOB): Remove unused macro.
5344
5345 * cm.c (cmgoto): Mark variables that gcc -Wuninitialized does not
5346 deduce are never used uninitialized.
5347 * term.c (encode_terminal_code): Likewise.
5348
5349 * term.c (encode_terminal_code): Now static. Remove unused local.
5350
5351 * tparam.h: New file.
5352 * term.c, tparam.h: Include it.
5353 * deps.mk (term.o, tparam.o): Depend on tparam.h.
5354 * term.c (tputs, tgetent, tgetflag, tgetnum, tparam, tgetstr):
5355 Move these decls to tparam.h, and make them agree with what
5356 is actually in tparam.c. The previous trick of using incompatible
5357 decls in different modules does not conform to the C standard.
5358 All callers of tparam changed to use tparam's actual API.
5359 * tparam.c (tparam1, tparam, tgoto):
5360 Use const pointers where appropriate.
5361
5362 * cm.c (calccost, cmgoto): Use const pointers where appropriate.
5363 * cm.h (struct cm): Likewise.
5364 * dispextern.h (do_line_insertion_deletion_costs): Likewise.
5365 * scroll.c (ins_del_costs, do_line_insertion_deletion_costs): Likewise.
5366 * term.c (tty_ins_del_lines, calculate_costs, struct fkey_table):
5367 (term_get_fkeys_1, append_glyphless_glyph, produce_glyphless_glyph):
5368 (turn_on_face, init_tty): Likewise.
5369 * termchar.h (struct tty_display_info): Likewise.
5370
5371 * term.c (term_mouse_position): Rename local to avoid shadowing.
5372
5373 * alloc.c (mark_ttys): Move decl from here ...
5374 * lisp.h (mark_ttys): ... to here, so that it's checked against defn.
5375
5376 2011-03-11 Andreas Schwab <schwab@linux-m68k.org>
5377
5378 * .gdbinit (pwinx, xbuffer): Fix access to buffer name.
5379
5380 2011-03-09 Juanma Barranquero <lekktu@gmail.com>
5381
5382 * search.c (compile_pattern_1): Remove argument regp, unused since
5383 revid:rms@gnu.org-19941211082627-3x1g1wyqkjmwloig.
5384 (compile_pattern): Don't pass it.
5385
5386 2011-03-08 Jan Djärv <jan.h.d@swipnet.se>
5387
5388 * xterm.h (DEFAULT_GDK_DISPLAY): New define.
5389 (GDK_WINDOW_XID, gtk_widget_get_preferred_size): New defines
5390 for ! HAVE_GTK3.
5391 (GTK_WIDGET_TO_X_WIN): Use GDK_WINDOW_XID.
5392
5393 * xmenu.c (menu_position_func): Call gtk_widget_get_preferred_size.
5394
5395 * gtkutil.c: Include gtkx.h if HAVE_GTK3. If ! HAVE_GTK3, define
5396 gdk_window_get_screen, gdk_window_get_geometry,
5397 gdk_x11_window_lookup_for_display and GDK_KEY_g.
5398 (xg_set_screen): Use DEFAULT_GDK_DISPLAY.
5399 (xg_get_pixbuf_from_pixmap): New function.
5400 (xg_get_pixbuf_from_pix_and_mask): Change parameters from GdkPixmap
5401 to Pixmap, take frame as parameter, remove GdkColormap parameter.
5402 Call xg_get_pixbuf_from_pixmap instead of
5403 gdk_pixbuf_get_from_drawable.
5404 (xg_get_image_for_pixmap): Do not make GdkPixmaps, call
5405 xg_get_pixbuf_from_pix_and_mask with Pixmap parameters instead.
5406 (xg_check_special_colors): Use GtkStyleContext and its functions
5407 for HAVE_GTK3.
5408 (xg_prepare_tooltip, xg_hide_tooltip): Call gdk_window_get_screen.
5409 (xg_prepare_tooltip, create_dialog, menubar_map_cb)
5410 (xg_update_frame_menubar, xg_tool_bar_detach_callback)
5411 (xg_tool_bar_attach_callback, xg_update_tool_bar_sizes):
5412 Call gtk_widget_get_preferred_size.
5413 (xg_frame_resized): gdk_window_get_geometry only takes 5
5414 parameters.
5415 (xg_win_to_widget, xg_event_is_for_menubar):
5416 Call gdk_x11_window_lookup_for_display.
5417 (xg_set_widget_bg): New function.
5418 (delete_cb): New function.
5419 (xg_create_frame_widgets): Connect delete-event to delete_cb.
5420 Call xg_set_widget_bg. Only set backgrund pixmap for ! HAVE_GTK3
5421 (xg_set_background_color): Call xg_set_widget_bg.
5422 (xg_set_frame_icon): Call xg_get_pixbuf_from_pix_and_mask.
5423 (xg_create_scroll_bar): vadj is a GtkAdjustment for HAVE_GTK3.
5424 Only call gtk_range_set_update_policy if ! HAVE_GTK3.
5425 (xg_make_tool_item): Only connect xg_tool_bar_item_expose_callback
5426 if ! HAVE_GTK3.
5427 (update_frame_tool_bar): Call gtk_widget_hide.
5428 (xg_initialize): Use GDK_KEY_g.
5429
5430 * xsmfns.c (gdk_set_sm_client_id): Define to gdk_set_sm_client_id
5431 if ! HAVE_GTK3
5432 (x_session_initialize): Call gdk_x11_set_sm_client_id.
5433
5434 * xterm.c (XFillRectangle): Use cairo routines for HAVE_GTK3.
5435 (x_term_init): Disable Xinput(2) with GDK_CORE_DEVICE_EVENTS.
5436 Load ~/emacs.d/gtkrc only for ! HAVE_GTK3.
5437
5438 2011-03-08 Juanma Barranquero <lekktu@gmail.com>
5439
5440 * w32xfns.c (select_palette): Check success of RealizePalette against
5441 GDI_ERROR, not zero.
5442
5443 See ChangeLog.11 for earlier changes.
5444
5445 ;; Local Variables:
5446 ;; coding: utf-8
5447 ;; End:
5448
5449 Copyright (C) 2011 Free Software Foundation, Inc.
5450
5451 This file is part of GNU Emacs.
5452
5453 GNU Emacs is free software: you can redistribute it and/or modify
5454 it under the terms of the GNU General Public License as published by
5455 the Free Software Foundation, either version 3 of the License, or
5456 (at your option) any later version.
5457
5458 GNU Emacs is distributed in the hope that it will be useful,
5459 but WITHOUT ANY WARRANTY; without even the implied warranty of
5460 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5461 GNU General Public License for more details.
5462
5463 You should have received a copy of the GNU General Public License
5464 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.