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