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