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