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