ChangeLog 328 KB
Newer Older
1 2 3 4 5
2011-11-05  Christoph Scholtes  <cschol2112@googlemail.com>

	* makefile.w32-in ($(TEMACS), (gl-stamp)): Use $(THISDIR) to
	support MSVC.

6 7 8 9 10 11 12 13 14
2011-11-05  Jason Rumney  <jasonr@gnu.org>

	* w32font.c (font_matches_spec): Filter out non-Japanese kana fonts.
	(add_font_entity_to_list): Filter out non-Japanese Shift-JIS
	fonts (Bug#6029).
	(add_font_entity_to_list): Fix logic errors in mixed boolean and
	bitwise arithmetic preventing use of unicode-sip and non-truetype
	opentype fonts.

15 16
2011-11-05  Eli Zaretskii  <eliz@gnu.org>

Eli Zaretskii's avatar
Eli Zaretskii committed
17 18 19
	* s/ms-w32.h (fstat, stat, utime): Move redirections to
	"emacs"-only part.

20 21 22 23
	* w32fns.c (x_create_tip_frame, Fx_create_frame): Rearrange
	initialization code to keep similarity to xfns.c after changes
	from 2011-11-05.

24 25
2011-11-05  Jan Djärv  <jan.h.d@swipnet.se>

26 27 28 29 30 31 32 33 34 35 36
	* nsfns.m: Declare image_cache_refcount if GLYPH_DEBUG.
	(unwind_create_frame): New function (Bug#9943).
	(Fx_create_frame): Restructure code to be more similar to the one in
	xfns.c.  Call record_unwind_protect with unwind_create_frame (Bug#9943).
	Initialize image_cache_refcount if GLYPH_DEBUG (Bug#9943).
	Move terminal->reference_count++ just before making the frame official
	(Bug#9943).

	* nsterm.m (x_free_frame_resources): New function.
	(x_destroy_window): Move code to x_free_frame_resources.

37 38 39 40 41 42
	* xfns.c (unwind_create_frame): Fix comment.
	(Fx_create_frame, x_create_tip_frame): Move
	terminal->reference_count++ just before making the frame
	official. Move initialization of image_cache_refcount and
	dpyinfo_refcount before calling init_frame_faces (Bug#9943).

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
2011-11-05  Eli Zaretskii  <eliz@gnu.org>

	Support MSVC build with newer versions of Visual Studio.
	* makefile.w32-in (TAGS-gmake): Don't use $(patsubst ...), as
	Nmake barfs on that.  Use $(OBJ*_c) variables instead, defined on
	nt/gmake.defs.

	* lisp.h (ENUM_BF): New macro, for enumerated types in bitfields,
	which are not supported by MSVC.
	(Lisp_Symbol, Lisp_Misc_Any, Lisp_Marker, Lisp_Misc_Overlay)
	(Lisp_Save_Value, Lisp_Free): Use ENUM_BF for enumerated types in
	bitfields.
	(Lisp_Object) [USE_LISP_UNION_TYPE]: Use ENUM_BF for enumerated
	types in bitfields.
	(DEFUN) [_MSC_VER]: Define in a different way for MSVC.

	* w32fns.c [_MSC_VER]: DECLARE_HANDLE for any MSVC version.

2011-11-05  Fabrice Popineau  <fabrice.popineau@supelec.fr> (tiny change)

	Support MSVC build with newer versions of Visual Studio.
	* w32.c: Don't include w32api.h for MSVC.
	(init_environment) [_MSC_VER]: Call sys_access, not _access.

	* s/ms-w32.h <sigset_t, ssize_t> [_MSC_VER]: Typedefs for MSVC.
	[_MSC_VER]: Include sys/timeb.h, sys/stat.h, and signal.h.
	(fstat, stat, utime) [_MSC_VER]: Redirect to their sys_* cousins.
	(malloc, free, realloc, calloc) [_MSC_VER]: Always redirect to the
	e_* cousins.
	(alloca) [_MSC_VER]: Define to _alloca.

	* lisp.h (DECL_ALIGN) [_MSC_VER]: Define for MSVC.

	* regex.c <re_char> [_MSC_VER]: A separate definition for MSVC.

78 79 80 81 82 83
2011-11-04  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (note_mouse_highlight): If either of
	previous/next-single-property-change returns nil, treat that as
	the beginning or the end of the buffer.  (Bug#9955)

84 85
2011-11-04  Jan Djärv  <jan.h.d@swipnet.se>

86
	* gtkutil.c (xg_make_tool_item): Add callbacks if one of wimage or
87 88 89 90
	label is not null (Bug#9951).
	(xg_tool_item_stale_p): Handle the fact that wimage and/or wlbl
	may be NULL.

91 92 93 94 95
2011-11-04  Eli Zaretskii  <eliz@gnu.org>

	* window.c (Fwindow_body_size): Mention in the doc string that the
	return value is in frame's canonical units.  (Bug#9949)

96 97
2011-11-03  Eli Zaretskii  <eliz@gnu.org>

98 99
	* xdisp.c (note_mouse_highlight): Initialize `area'.  (Bug#9947)

100
	* w32fns.c (unwind_create_frame): If needed, free the glyph
101
	matrices of the partially constructed frame.  (Bug#9943)
Eli Zaretskii's avatar
Eli Zaretskii committed
102
	* xfns.c (unwind_create_frame): Likewise.
103

104 105 106 107 108
2011-11-01  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (mouse_face_from_buffer_pos): Fix a typo in a comment.
	Don't stop backward scan on the continuation glyph, even though
	its CHARPOS is positive.
109 110
	(mouse_face_from_buffer_pos, note_mouse_highlight): Rename
	cover_string to disp_string.
111

112 113 114 115 116 117
2011-11-01  Martin Rudalics  <rudalics@gmx.at>

	* window.c (temp_output_buffer_show): Don't use
	Vtemp_buffer_show_specifiers.
	(Vtemp_buffer_show_specifiers): Remove unused variable.

118 119 120 121 122
2011-10-30  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (try_cursor_movement): Make sure ROW isn't decremented
	past the beginning of the current glyph matrix.

Jan Djärv's avatar
Jan Djärv committed
123 124 125 126 127
2011-10-30  Adam Sjøgren <asjo@koldfront.dk> (tiny change)

	* xterm.c: Include X11/Xproto.h if HAVE_GTK3.
	(x_error_handler): Ignore BadMatch for X_SetInputFocus for
	HAVE_GTK3 (Bug#9869).
128

129 130 131
	* gtkutil.c (xg_win_to_widget, xg_event_is_for_menubar): Initialize
	type to GDK_NOTHING so valgrind does not complain (Bug#9901).

132 133 134 135 136 137 138 139 140 141 142
	* xterm.h (x_display_info): Add Xatom_net_wm_state_hidden (Bug#9893).

	* xterm.c: Declare x_handle_net_wm_state to return int.
	(handle_one_xevent): Check if we are iconified but don't have
	_NET_WM_STATE_HIDDEN.  If do, treat as deiconify (Bug#9893).
	(get_current_wm_state): Return non-zero if not hidden,
	check for _NET_WM_STATE_HIDDEN (Bug#9893).
	(do_ewmh_fullscreen): Ignore return value from get_current_wm_state.
	(x_handle_net_wm_state): Return what get_current_wm_state returns.
	(x_term_init): Initialize dpyinfo->Xatom_net_wm_state_hidden.

143 144 145 146 147 148
2011-10-29  Paul Eggert  <eggert@cs.ucla.edu>

	* alloc.c (which_symbols): Declare EXTERNALLY_VISIBLE,
	so that this new function doesn't get optimized away by a
	whole-program optimizer.  Make the 2nd arg EMACS_INT, not int.

149 150 151 152
2011-10-29  Andreas Schwab  <schwab@linux-m68k.org>

	* frame.h (MOUSE_HL_INFO): Remove excess parens.

153 154 155 156 157 158 159
2011-10-29  Eli Zaretskii  <eliz@gnu.org>

	Fix the `xbytecode' command.
	* .gdbinit (xprintbytestr): New command.
	(xwhichsymbols): Renamed from `which'; all callers changed.
	(xbytecode): Print the byte-code string as well.

160 161
2011-10-29  Kim Storm  <storm@cua.dk>

162 163
	* alloc.c (which_symbols): New function.

Andreas Schwab's avatar
Andreas Schwab committed
164 165 166 167 168
2011-10-29  Andreas Schwab  <schwab@linux-m68k.org>

	* minibuf.c (read_minibuf_noninteractive): Allow reading empty
	line.  (Bug#9903)

169 170 171 172 173
2011-10-29  Glenn Morris  <rgm@gnu.org>

	* process.c (wait_reading_process_output): Revert 2009-08-30 change.
	Not clear what it was for, and it causes various bugs.  (Bug#9839)

174 175 176 177 178 179
2011-10-28  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (note_mouse_highlight): Initialize `part', to avoid a
	possible random value that matches one of those tested as
	condition to clear the mouse face.

180 181 182 183
2011-10-28  Chong Yidong  <cyd@gnu.org>

	* xdisp.c (note_mouse_highlight): Fix use of uninitialized var.

184 185 186 187
2011-10-28  Dan Nicolaescu  <dann@ics.uci.edu>

	* window.c (make_window): Initialize phys_cursor_on_p.

188 189 190 191
2011-10-28  Stefan Monnier  <monnier@iro.umontreal.ca>

	* lisp.h (struct Lisp_Symbol): Update comments.

192 193 194 195
2011-10-28  Juanma Barranquero  <lekktu@gmail.com>

	* w32font.c (w32_load_unicows_or_gdi32): Add missing return.

196 197 198 199 200 201 202 203 204 205 206
2011-10-28  Eli Zaretskii  <eliz@gnu.org>

	Fix Emacs on Windows 9X (bug#8562).  Thanks to oslsachem
	<oslsachem@gmail.com> for helping to debug this.

	* w32font.c (g_b_init_is_w9x, g_b_init_get_outline_metrics_w)
	(g_b_init_get_text_metrics_w, g_b_init_get_glyph_outline_w)
	(g_b_init_get_glyph_outline_w): New static variables.
	(GetOutlineTextMetricsW_Proc, GetTextMetricsW_Proc)
	(GetGlyphOutlineW_Proc): New typedefs.
	(w32_load_unicows_or_gdi32, get_outline_metrics_w)
207 208 209 210
	(get_text_metrics_w, get_glyph_outline_w, globals_of_w32font):
	New functions.
	(w32font_open_internal, compute_metrics):
	Call get_outline_metrics_w, get_text_metrics_w, and get_glyph_outline_w
211 212 213 214 215 216
	instead of calling the "wide" APIs directly.

	* emacs.c (main) [HAVE_NTGUI]: Call globals_of_w32font.

	* w32.h (syms_of_w32font): Add prototype.

217 218 219 220 221 222 223
2011-10-27  Juanma Barranquero  <lekktu@gmail.com>

	* window.c (Fframe_root_window, Fframe_first_window, Fwindow_end)
	(Fframe_selected_window, Ftemp_output_buffer_show, Fnext_window)
	(Fdelete_window_internal, Fwindow_parameters): Fix typos in docstrings.
	(Fmove_to_window_line): Doc fix.

Chong Yidong's avatar
Chong Yidong committed
224 225 226 227 228 229 230 231 232 233 234
2011-10-27  Chong Yidong  <cyd@gnu.org>

	* process.c (make_process): Set gnutls_state to NULL.

	* gnutls.c (emacs_gnutls_deinit): Deinit the gnutls_state if it is
	non-NULL, regardless of GNUTLS_INITSTAGE.
	(Fgnutls_boot): Cleanups.  Call emacs_gnutls_deinit if we signal
	an error.  Set process slots as soon as we allocate them.

	* gnutls.h (GNUTLS_LOG, GNUTLS_LOG2): Fix macros.

235 236
2011-10-27  Chong Yidong  <cyd@gnu.org>

237 238
	* gnutls.c (emacs_gnutls_deinit): New function.
	Deallocate credentials structures as well as calling gnutls_deinit.
239 240 241 242 243
	(Fgnutls_deinit, Fgnutls_boot): Use it.

	* process.c (make_process): Initialize GnuTLS credentials to NULL.
	(deactivate_process): Call emacs_gnutls_deinit.

244 245 246 247 248 249 250
2011-10-27  Juanma Barranquero  <lekktu@gmail.com>

	* image.c (x_create_x_image_and_pixmap):
	* w32.c (sys_rename, w32_delayed_load):
	* w32font.c (fill_in_logfont):
	* w32reg.c (x_get_string_resource): Silence compiler warnings.

251 252 253 254
2011-10-26  Juanma Barranquero  <lekktu@gmail.com>

	* w32fns.c (w32_default_color_map): New function,
	extracted from Fw32_default_color_map.
Juanma Barranquero's avatar
Juanma Barranquero committed
255
	(Fw32_default_color_map, Fx_open_connection): Use it.  (Bug#9785)
256

257 258 259 260
2011-10-25  Paul Eggert  <eggert@cs.ucla.edu>

	* dispextern.h (Fcontrolling_tty_p): New decl (Bug#6649 part 2).

261 262 263 264 265
2011-10-25  Stefan Monnier  <monnier@iro.umontreal.ca>

	* keyboard.c (test_undefined): New function (bug#9751).
	(read_key_sequence): Use it to detect when a key is bound to `undefined'.

266 267 268 269 270
2011-10-25  Enami Tsugutomo  <tsugutomo.enami@jp.sony.com>

	* sysdep.c (init_sys_modes): Fix the check for the controlling
	terminal (Bug#6649).

271 272 273 274 275 276 277 278 279 280 281 282 283
2011-10-20  Eli Zaretskii  <eliz@gnu.org>

	* dispextern.h (struct bidi_it): New member next_en_type.

	* bidi.c (bidi_line_init): Initialize the next_en_type member.
	(bidi_resolve_explicit_1): When next_en_pos is valid for the
	current character, check also for next_en_type being WEAK_EN.
	(bidi_resolve_weak): Don't enter the expensive loop if the current
	position is before next_en_pos.  Record the bidi type of the first
	non-ET, non-BN character we find, in addition to its position.
	(bidi_level_of_next_char): Invalidate next_en_type when
	next_en_pos is over-stepped.

284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304
2011-10-20  Paul Eggert  <eggert@cs.ucla.edu>

	Time zone name fixes for non-ASCII locales (Bug#641, Bug#9794)
	* editfns.c: Rewrite current-time-zone so that it invokes
	the equivalent of (format-time-string "%Z") to get the time zone name.
	This fixes a bug when the time zone name contains characters that
	need converting from the system time locale to Emacs internal format.
	This fixes a shortcoming that I introduced in my 1999-10-19 patch:
	that patch fixed format-time-string to do the conversion, but
	I forgot to fix current-time-zone.
	(format_time_string): New function, containing most of
	what Fformat_time_string used to contain.
	(Fformat_time_string): Rewrite in terms of format_time_string.
	This doesn't change this function's behavior.
	(current-time-zone): Rewrite to use format_time_string.
	This fixes the bug reported by Michael Schierl in
	<http://lists.gnu.org/archive/html/emacs-devel/2007-06/msg00334.html>.
	Jason Rumney's 2007-06-07 change worked around this bug, but
	didn't fix it.
	* systime.h (tzname, timezone): Remove no-longer-used declarations.

305 306 307 308
2011-10-19  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (start_display): If the character at POS is displayed
	via a display vector, reset IT->current.dpvec_index to zero.
309 310 311 312
	(try_window_reusing_current_matrix): If a line ends in a display
	vector or the next line starts in a display vector, continue
	redrawing the window even though the character position of
	start_row was reached.
313 314
	(Bug#9771, part 2)

315 316 317 318 319
2011-10-18  Chong Yidong  <cyd@gnu.org>

	* xdisp.c (get_next_display_element): Handle U+2010 and U+2011
	with nobreak-char-display too.

320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
2011-10-18  Eli Zaretskii  <eliz@gnu.org>

	Fix part 3 of bug#9771.
	* bidi.c (bidi_line_init): Initialize next_en_pos to zero, not -1.
	(bidi_resolve_neutral): Don't enter the expensive loop looking for
	non-neutral characters if the current character is a paragraph
	separator (a.k.a. Newline).  This avoids running the same
	expensive loop twice, once when we consume the preceding newline
	and the other time when the line actually needs to be displayed.
	Avoid the loop when we see neutrals on the base embedding level
	following a character whose directionality is the same as the
	paragraph's.  This avoids running the expensive loop when a line
	ends in a long sequence of neutrals, like control characters.
	Add assertion against STRONG_AL type.  Slightly rearrange code
	that determines the type of a neutral given the first non-neutral
	that follows it.
	(bidi_level_of_next_char): Set next_en_pos to zero when
	invalidating its info.

339 340 341 342 343
2011-10-17  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (push_display_prop): Determine whether to record string
	or buffer position by IT->string, not by IT->method.  Allow
	GET_FROM_DISPLAY_VECTOR as IT->method on entry.  (Bug#9771, part 4)
344 345 346
	(move_it_vertically_backward): Don't look for character position
	immediately after the newline when in a continuation line.
	(Bug#9771, part 1)
347

348 349 350 351 352
2011-10-15  Martin Rudalics  <rudalics@gmx.at>

	* window.c (coordinates_in_window): Rewrite and delabelize
	vertical border check.  (Bug#5357) (Bug#9618)

353 354 355 356 357
2011-10-14  Stefan Monnier  <monnier@iro.umontreal.ca>

	* xterm.c (frame_highlight, frame_unhighlight): Ignore unexplained
	errors in XSetWindowBorder (bug#9310).

358 359 360 361 362
2011-10-13  Dmitry Antipov  <dmantipov@yandex.ru>

	* editfns.c (Fset_time_zone_rule): Replace free with xfree to
	avoid crash when xmalloc overrun checking is enabled.

363 364 365 366 367 368 369 370 371
2011-10-13  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize
	itb.paragraph_dir to NEUTRAL_DIR.  Fixes an occasional incorrect
	cursor motion with <left> and <right> arrow keys.

	* bidi.c (bidi_init_it): Don't initialize paragraph_dir here, as
	some callers set that themselves.

372 373 374 375 376 377
2011-10-12  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (find_row_edges): Handle the case where ROW comes from a
	display string and the previous row comes from the same string and
	is empty.  (Bug#9739)  (Bug#9738)

378 379 380 381
2011-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>

	* doc.c (get_doc_string): Encode file name (bug#9735).

382 383
2011-10-12  Eli Zaretskii  <eliz@gnu.org>

384 385 386 387
	* bidi.c (bidi_level_of_next_char):
	* xdisp.c (get_visually_first_element): Remove old incorrect
	comments regarding the Unicode Line Separator character.

388 389
	* bidi.c (bidi_init_it): Initialize paragraph_dir to NEUTRAL_DIR.

390 391 392 393 394 395
2011-10-12  Dmitry Antipov  <dmantipov@yandex.ru>

	* alloc.c (Fgc_status): Do not access beyond zombies array
	boundary if nzombies > MAX_ZOMBIES.
	* alloc.c (dump_zombies): Add missing format specifier.

396 397
2011-10-12  Paul Eggert  <eggert@cs.ucla.edu>

398 399 400
	* xdisp.c (set_cursor_from_row): Simplify conditionals,
	to pacify GCC 4.6.1 x86-64 with -O2 -Wstrict-overflow.

401 402 403
	* lread.c (read_escape): Allow hex escapes as large as ?\xfffffff.
	Some packages use them to denote characters with modifiers.

404 405 406 407 408 409
2011-10-11  Andreas Schwab  <schwab@linux-m68k.org>

	* lisp.h (GCPRO1_VAR, GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR)
	(GCPRO5_VAR, GCPRO6_VAR, UNGCPRO_VAR): Add whitespace to avoid
	matching a pp-number.  Rename parameter var to var1.

410 411 412 413
2011-10-11  Stefan Monnier  <monnier@iro.umontreal.ca>

	* minibuf.c (Finternal_complete_buffer): Fix last change (bug#9709).

Glenn Morris's avatar
Glenn Morris committed
414 415 416 417 418
2011-10-08  Glenn Morris  <rgm@gnu.org>

	* callint.c (Fcall_interactively): Give a more explicit error for the
	'c' case with a non-character input.  (Bug#8479)

419 420
2011-10-08  Eli Zaretskii  <eliz@gnu.org>

421 422
	* xdisp.c (hscroll_window_tree): Support hscroll in right-to-left
	lines.
423 424
	(set_cursor_from_row): Fix cursor positioning in mixed L2R+R2L
	lines that are hscrolled on the left.
425

426 427 428
	* dispnew.c (buffer_posn_from_coords): Account for a possible
	presence of header-line.  (Bug#4426)

429 430
2011-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>

431 432
	* buffer.c (syms_of_buffer) <enable-multibyte-characters>:
	Don't advertise functionality which we discourage or doesn't work.
433

434 435 436 437 438 439 440 441 442 443 444 445
2011-10-07  Paul Eggert  <eggert@cs.ucla.edu>

	* alloc.c (GC_LISP_OBJECT_ALIGNMENT): Use offsetof, not __alignof__
	or sizeof.  __alignof__ gives the wrong answer on Fedora x86-64
	with GCC 4.6.1 when configured with CC='gcc -m32' --with-wide-int;
	this makes Emacs dump core during garbage collection on rare
	occasions.  sizeof is obviously inferior to offsetof here, so
	stick with offsetof.
	(GC_POINTER_ALIGNMENT): New macro.
	(mark_memory): Omit 3rd (offset) arg; caller changed.
	Don't assume EMACS_INT alignment is the same as pointer alignment.

446 447 448 449 450 451
2011-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>

	* keyboard.c (read_key_sequence_remapped): New var.
	(read_key_sequence): Compute remapping in the right buffer.
	(command_loop_1): Use read_key_sequence's remapping directly.

452 453
2011-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>

454 455 456 457
	* dired.c (file_name_completion): Don't expand file name.
	(Ffile_name_completion, Ffile_name_all_completions): Expand file name
	before checking file name handler.

458 459 460
	* minibuf.c (Finternal_complete_buffer): Only show internal buffers if
	they've been requested explicitly (bug#9591).

Chong Yidong's avatar
Chong Yidong committed
461
2011-10-01  Andreas Schwab  <schwab@linux-m68k.org>
462 463 464 465 466

	* keymap.c (Fsingle_key_description): Use make_specified_string
	instead of build_string to build string from push_key_description.
	(Bug#5193)

467 468
2011-09-30  Paul Eggert  <eggert@cs.ucla.edu>

469 470 471 472 473 474 475 476
	* buffer.h (struct buffer): Use time_t, not int, for a time stamp.
	This fixes a Y2038 bug on 64-bit hosts.
	* buffer.c (reset_buffer):
	* fileio.c (Fdo_auto_save, Fset_buffer_auto_saved)
	(Fclear_buffer_auto_save_failure):
	Use 0, not -1, to represent an unset failure time, since time_t
	might not be signed.

477 478 479 480 481 482 483 484 485 486 487 488 489 490
	Remove dependency on glibc malloc internals.
	* alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE):
	Move back here from lisp.h, but with their new implementations.
	(XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT)
	(XMALLOC_OVERRUN_SIZE_SIZE): Move these new lisp.h macros here.
	* charset.c (charset_table_init): New static var.
	(syms_of_charset): Use it instead of xmalloc.  This removes a
	dependency on glibc malloc internals.  See Eli Zaretskii's comment in
	<http://lists.gnu.org/archive/html/emacs-devel/2011-09/msg00815.html>.
	* lisp.h (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE):
	Move back to alloc.c.
	(XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT)
	(XMALLOC_OVERRUN_SIZE_SIZE): Move to alloc.c.

491 492 493 494 495 496
2011-09-30  Jan Djärv  <jan.h.d@swipnet.se>

	* nsterm.m (windowDidResize): Call x_set_window_size only when
	ns_in_resize is true.  Otherwise set pixelwidth/height and
	call change_frame_size (Bug#9628).

497 498
2011-09-30  Paul Eggert  <eggert@cs.ucla.edu>

499 500 501 502
	Port --enable-checking=all to Fedora 14 x86-64.
	* charset.c (syms_of_charset): Also account for glibc malloc's
	internal overhead when calculating the initial malloc maximum.

503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520
	Port --enable-checking=all to Fedora 14 x86.
	* alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE):
	Move to lisp.h.
	(xmalloc_put_size, xmalloc_get_size, overrun_check_malloc)
	(overrun_check_realloc, overrun_check_free):
	Use XMALLOC_OVERRUN_SIZE_SIZE, not sizeof (size_t).
	That way, xmalloc returns a properly-aligned pointer even if
	XMALLOC_OVERRUN_CHECK is defined.  The old debugging code happened
	to align OK on typical 64-bit hosts, but not on Fedora 14 x86.
	* charset.c (syms_of_charset): Take XMALLOC_OVERRUN_CHECK_OVERHEAD
	into account when calculating the initial malloc maximum.
	* lisp.h (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE):
	Move here from alloc.c, so that charset.c can use it too.
	Properly align; the old code wasn't right for common 32-bit hosts
	when configured with --enable-checking=all.
	(XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT)
	(XMALLOC_OVERRUN_SIZE_SIZE): New macros.

Eli Zaretskii's avatar
Eli Zaretskii committed
521 522
2011-09-29  Eli Zaretskii  <eliz@gnu.org>

523
	* sysdep.c (snprintf) [!EOVERFLOW]: If EOVERFLOW is not defined,
Eli Zaretskii's avatar
Eli Zaretskii committed
524 525
	use EDOM.

526 527 528 529 530 531 532 533 534
2011-09-28  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (compute_display_string_end): If there's no display
	string at CHARPOS, return -1.

	* bidi.c (bidi_fetch_char): When compute_display_string_end
	returns a negative value, treat the character as a normal
	character not covered by a display string.  (Bug#9624)

Juanma Barranquero's avatar
Juanma Barranquero committed
535 536 537 538
2011-09-28  Juanma Barranquero  <lekktu@gmail.com>

	* lread.c (Fread_from_string): Fix typo in docstring.

539 540 541 542 543
2011-09-27  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (handle_invisible_prop): If invisible text ends on a
	newline, reseat the iterator instead of bidi-iterating there one
	character at a time.  (Bug#9610)
544 545
	(BUFFER_POS_REACHED_P, move_it_in_display_line_to): Bail when past
	TO_CHARPOS if the bidi iterator is at base embedding level.
546

547 548 549 550 551
2011-09-27  Andreas Schwab  <schwab@linux-m68k.org>

	* lread.c (readevalloop): Use correct code for NBSP.
	(read1): Likewise.  (Bug#9608)

552 553 554 555 556
2011-09-25  Michael Albinus  <michael.albinus@gmx.de>

	* dbusbind.c (Fdbus_register_signal): When service is not
	registered, use nil in Vdbus_registered_objects_table.  (Bug#9581)

557 558 559 560
2011-09-25  Glenn Morris  <rgm@gnu.org>

	* buffer.c (truncate-lines): Doc fix.

561 562 563 564 565
2011-09-24  Chong Yidong  <cyd@stupidchicken.com>

	* window.c (Fwindow_prev_buffers, Fset_window_prev_buffers)
	(Fset_window_next_buffers): Doc fix.

566 567 568 569
2011-09-24  Glenn Morris  <rgm@gnu.org>

	* minibuf.c (read_minibuf): Disable line truncation.  (Bug#5715)

570 571
2011-09-24  Paul Eggert  <eggert@cs.ucla.edu>

572 573
	Fix minor problems found by static checking.
	* xdisp.c (string_from_display_spec): Don't assume vecsize fits in int.
574 575
	* indent.c (Fvertical_motion): Fix == vs = typo.

576 577
2011-09-24  Eli Zaretskii  <eliz@gnu.org>

578 579
	* dispnew.c (syms_of_display) <redisplay-dont-pause>:
	Default value is now t.  Doc fix.
580

581
	* indent.c (Fvertical_motion): Compute and apply the overshoot
582
	logic when moving up, not only when moving down.  Fix the
583
	confusing name and values of the it_overshoot_expected variable;
584
	logic changes accordingly.  (Bug#9254) (Bug#9549)
585 586 587 588 589 590

	* xdisp.c (pos_visible_p): Produce correct pixel coordinates when
	CHARPOS is covered by a display string which includes newlines.
	(move_it_vertically_backward): Avoid inflooping when START_CHARPOS
	is covered by a display string with embedded newlines.

591 592 593 594
2011-09-24  Michael Albinus  <michael.albinus@gmx.de>

	* dbusbind.c (Fdbus_register_signal): Add match rule to
	Vdbus_registered_objects_table.  (Bug#9581)
595 596
	(Fdbus_register_method, Vdbus_registered_objects_table):
	Fix docstring.
597

598 599
2011-09-24  Jim Meyering  <meyering@redhat.com>

600
	do not ignore write error for any output size
601 602 603 604 605 606 607 608 609 610 611 612
	The previous change was incomplete.
	While it makes emacs --batch detect the vast majority of stdout
	write failures, errors were still ignored whenever the output size is
	k * (BUFSIZ+1) - 4.  E.g., on a system with BUFSIZ of 4096,
	  $ emacs --batch --eval '(print (format "%4093d" 0))' > /dev/full \
	      && echo FAIL: ignored write error
	  FAIL: ignored write error
	  $ emacs --batch --eval '(print (format "%20481d" 0))' > /dev/full \
	      && echo FAIL: ignored write error
	  FAIL: ignored write error
	* emacs.c (Fkill_emacs): Also test ferror.  (Bug#9574)

613 614 615 616 617
2011-09-23  Andreas Schwab  <schwab@linux-m68k.org>

	* emacs.c (Fkill_emacs): In noninteractive mode exit
	non-successfully if a write error occurred on stdout.  (Bug#9574)

618 619 620 621 622 623 624 625
2011-09-21  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (pop_it): Allow it->object that is a cons cell to pass
	the xassert test.

	* dispextern.h (struct it): Update the comment documenting what
	can it->OBJECT be.

626 627 628 629 630 631 632
2011-09-20  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (set_cursor_from_row): If the row ends in a newline from
	a display string, extend search for cursor position to end of row.
	(find_row_edges): If the row ends in a newline from a display
	string, increment its MATRIX_ROW_END_CHARPOS by one.  (Bug#9549)
	Handle the case of a display string with multiple newlines.
633 634 635
	(Fcurrent_bidi_paragraph_direction): Fix search for previous
	non-empty line.  Fixes confusing cursor motion with arrow keys at
	the beginning of a line that starts with whitespace.
636

637 638 639 640 641
2011-09-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>

	* lread.c (Fread_from_string): Document what FINAL-STRING-INDEX is
	(bug#9493).

642 643 644 645 646
2011-09-18  Chong Yidong  <cyd@stupidchicken.com>

	* xfns.c (Fx_create_frame): Handle the bitmapIcon resource as
	boolean (Bug#9154).

Eli Zaretskii's avatar
Eli Zaretskii committed
647 648 649 650 651 652 653
2011-09-18  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (display_line): Record maximum and minimum buffer
	positions even if no glyphs were produced (e.g., by a zero-width
	stretch).  Fixes bug#9530 on a TTY.  Under word-wrap, don't record
	buffer positions that will be removed from the glyph row because
	they don't fit.
654 655 656
	(produce_stretch_glyph): Fix a bug in :align-to on a TTY when the
	column is beyond frame width: don't subtract 1 "pixel" when
	computing width of the stretch.
657 658 659
	(reseat_at_next_visible_line_start): Undo the change made on
	2011-09-17 that saved paragraph information and restored it after
	the call to `reseat'.  (Bug#9545)
Eli Zaretskii's avatar
Eli Zaretskii committed
660

661
2011-09-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
662 663 664 665

	* xdisp.c (expose_window): Save original value of phys_cursor_on_p
	and turn window cursor on if cleared (Bug#9415).

666
2011-09-18  Andreas Schwab  <schwab@linux-m68k.org>
667 668 669 670

	* search.c (boyer_moore): Take unibyte characters from pattern
	literally.  (Bug#9458)

671 672 673 674
2011-09-18  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (reseat_at_next_visible_line_start): Fix last change.

675 676
2011-09-18  Paul Eggert  <eggert@cs.ucla.edu>

677 678 679 680
	Fix minor problem found by static checking.
	* xdisp.c (reseat_at_next_visible_line_start): Mark locals as
	initialized, to pacify gcc -Wuninitialized.

681 682 683 684 685
	* fileio.c: Report proper errno when syscall falls.
	(Finsert_file_contents): Save and restore errno,
	so that report_file_error outputs the correct diagnostic.
	(Fwrite_region) [CLASH_DETECTION]: Likewise.

686 687 688 689
2011-09-18  Eli Zaretskii  <eliz@gnu.org>

	* .gdbinit (pgx): Fix references to fields of `struct glyph'.

690 691 692 693 694
2011-09-17  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (produce_stretch_glyph): Another fix for changes made on
	2011-08-30T17:32:44Z!eliz@gnu.org.  (Bug#9530)

695 696
2011-09-17  Eli Zaretskii  <eliz@gnu.org>

697
	* xdisp.c (reseat_at_next_visible_line_start): Keep information
698
	about the current paragraph and restore it after the call to reseat.
699 700 701 702 703 704 705 706

	* bidi.c (MAX_PARAGRAPH_SEARCH): New macro.
	(bidi_find_paragraph_start): Search back for paragraph beginning
	at most MAX_PARAGRAPH_SEARCH lines; if not found, return BEGV_BYTE.
	(bidi_move_to_visually_next): Only trigger paragraph-related
	computations when the last character is a newline or at EOB, not
	just any NEUTRAL_B.  (Bug#9470)

707 708 709
	* xdisp.c (set_cursor_from_row): Don't invoke special treatment of
	truncated lines if point is covered by a display string.  (Bug#9524)

710 711 712 713 714 715 716 717
2011-09-16  Paul Eggert  <eggert@cs.ucla.edu>

	* xselect.c: Relax test for outgoing X longs (Bug#9498).
	(cons_to_x_long): New function.
	(lisp_data_to_selection_data): Use it.  Correct the test for
	short-versus-long data; it was negated.  Break out of vector
	loop, for efficiency, when a long datum is discovered.

718 719 720 721
2011-09-16  Stefan Monnier  <monnier@iro.umontreal.ca>

	* eval.c (Fquote): Document its non-consing behavior (bug#9482).

722 723 724 725 726
2011-09-16  Eli Zaretskii  <eliz@gnu.org>

	* image.c (tiff_handler): Work around a bug in MinGW GCC 3.x (see
	GCC PR/17406) by declaring this function with external scope.

727 728 729 730 731
2011-09-15  Paul Eggert  <eggert@cs.ucla.edu>

	* editfns.c (Fformat): Fix bug in text-property fix (Bug#9514).
	Don't mishandle (length (format "%%")) and (format "%4000s%%" "").

732 733 734 735
2011-09-15  Andreas Schwab  <schwab@linux-m68k.org>

	* editfns.c (Fformat): Correctly handle text properties on "%%".

736 737 738 739 740 741 742 743 744 745
2011-09-15  Eli Zaretskii  <eliz@gnu.org>

	* xterm.c (x_draw_composite_glyph_string_foreground):
	* w32term.c (x_draw_composite_glyph_string_foreground):
	* term.c (encode_terminal_code):
	* composite.c (composition_update_it, get_composition_id):
	* xdisp.c (get_next_display_element)
	(fill_composite_glyph_string): Add comments about special meaning
	of TAB characters in a composition.

746 747 748
2011-09-15  Paul Eggert  <eggert@cs.ucla.edu>

	* editfns.c (Fformat): Fix off-by-1 bug for "%%b" (Bug#9514).
Paul Eggert's avatar
Paul Eggert committed
749 750
	This occurs when processing a multibyte format.
	Problem reported by Wolfgang Jenker.
751

752 753 754 755 756
2011-09-15  Johan Bockgård  <bojohan@gnu.org>

	* xdisp.c (try_cursor_movement): Only check for exact match if
	cursor hpos found by set_cursor_from_row is valid.  (Bug#9495)

Paul Eggert's avatar
Paul Eggert committed
757 758 759 760 761 762 763 764 765 766
2011-09-14  Paul Eggert  <eggert@cs.ucla.edu>

	Remove unused external symbols.
	* dispextern.h (calc_pixel_width_or_height): Remove decl.
	* xdisp.c (calc_pixel_width_or_height): Now static.
	* doprnt.c (exprintf) [! (HAVE_X_WINDOWS && USE_X_TOOLKIT)]: Remove.
	* indent.c (check_display_width):
	* w32term.c: Fix comment to match code.
	* xterm.c, xterm.h (x_catching_errors): Remove.

767 768 769 770 771 772 773 774 775 776
2011-09-14  Paul Eggert  <eggert@cs.ucla.edu>

	* xselect.c: Use signed conversions more consistently (Bug#9498).
	(selection_data_to_lisp_data): Assume incoming selection data are
	signed integers, not unsigned.  This is to be consistent with
	outgoing selection data, which was modified to use signed integers
	in as part of the fix to Bug#9196 in response to Jan D.'s comment
	in <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9196#32> that X11
	expects long, not unsigned long.

777 778 779 780 781 782
2011-09-14  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (try_window_reusing_current_matrix): Fix incorrect
	computation of loop end.  Reported by Johan Bockgård
	<bojohan@gnu.org>.

783 784 785 786
2011-09-13  Chong Yidong  <cyd@stupidchicken.com>

	* frame.c (Fother_visible_frames_p): Function deleted.

787 788 789 790 791
2011-09-12  Eli Zaretskii  <eliz@gnu.org>

	* indent.c (compute_motion): Process display vector front to back
	rather than the other way around.  (Bug#2496)

792 793 794 795
2011-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>

	* fileio.c (Finsert_file_contents): Don't assume beg_offset is 0.

796 797 798 799
2011-09-11  Chong Yidong  <cyd@stupidchicken.com>

	* minibuf.c (Fread_from_minibuffer): Doc fix.

800 801 802 803 804
2011-09-11  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (produce_stretch_glyph): Fix a typo made in changes from
	2011-08-30T17:32:44Z!eliz@gnu.org.  (Bug#9475)

805 806 807 808 809
2011-09-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>

	* fileio.c (Fvisited_file_modtime): Document `(-1 65535)' as a
	value for non-existent files.

810 811 812 813 814 815 816 817
2011-09-11  Eli Zaretskii  <eliz@gnu.org>

	* fileio.c (Finsert_file_contents): If the file cannot be opened,
	set its "size" to -1.  This will set the modtime_size field of
	the corresponding buffer to -1, which is what
	verify-visited-file-modtime expects for files that do not exist.
	(Bug#9139)

818 819 820 821 822 823 824 825 826
2011-09-11  Paul Eggert  <eggert@cs.ucla.edu>

	* keymap.h (KEY_DESCRIPTION_SIZE, push_key_description): Move decls
	here ...
	* lisp.h: ... from here.  push_key_description is no longer
	defined in keyboard.c, so its declaration should not be in
	lisp.h's "Defined in keyboard.c" section, and KEY_DESCRIPTION_SIZE
	logically belongs with push_key_description.

827 828 829 830 831 832
2011-09-10  Paul Eggert  <eggert@cs.ucla.edu>

	* buffer.h: Include <sys/types.h> instead of <time.h>.
	Otherwise, off_t wasn't defined on FreeBSD 9.0-BETA2 i386.
	Problem reported by Herbert J. Skuhra.

833 834 835 836 837
2011-09-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>

	* xml.c (parse_region): Make the parsing work for
	non-comment-starting XML files again (bug#9144).

838 839 840 841 842
2011-09-10  Andreas Schwab  <schwab@linux-m68k.org>

	* image.c (gif_load): Fix calculation of bottom and right corner.
	(Bug#9468)

843 844 845 846 847
2011-09-10  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (MAX_DISP_SCAN): Decrease to 250.  Prevents sluggish
	redisplay in small windows.

848 849 850 851
2011-09-09  Eli Zaretskii  <eliz@gnu.org>

	* frame.c (x_report_frame_params): Cast to avoid compiler warnings.

852 853 854 855 856
2011-09-08  Martin Rudalics  <rudalics@gmx.at>

	* window.c (Fset_window_prev_buffers, Fset_window_next_buffers):
	Operate on live windows only.

857 858 859 860
2011-09-08  Juanma Barranquero  <lekktu@gmail.com>

	* emacs.c (my_heap_start): #ifdef to avoid warnings when unused.

861 862 863 864 865
2011-09-07  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (move_it_in_display_line_to): Call RESTORE_IT on ppos_it
	only under bidi iteration.

866 867 868 869
2011-09-07  Jan Djärv  <jan.h.d@swipnet.se>

	* gtkutil.c (xg_make_tool_item): Insert comment about eventbox.

870 871 872 873 874 875 876 877 878 879 880 881 882 883
2011-09-06  Paul Eggert  <eggert@cs.ucla.edu>

	isnan: Fix porting problem to Solaris 10 with bundled gcc.
	Without this fix, the command to link temacs failed due to an
	undefined symbol __builtin_isnan.  This is because
	/usr/include/iso/math_c99.h #defines isnan(x) to
	__builtin_isnan(x), but the bundled gcc, which identifies itself
	as gcc 3.4.3 (csl-sol210-3_4-branch+sol_rpath), does not have
	a __builtin_isnan.
	* floatfns.c (isnan): #undef, and then #define to a clone of
	what's in data.c.
	(Fisnan): Always define, since it's always available now.
	(syms_of_floatfns): Always define isnan at the Lisp level.

Paul Eggert's avatar
Paul Eggert committed
884
2011-09-06  Paul Eggert  <eggert@cs.ucla.edu>
Paul Eggert's avatar
Paul Eggert committed
885 886 887

	* Makefile.in (gl-stamp): move-if-change now in build-aux (Bug#9169).

Paul Eggert's avatar
Paul Eggert committed
888
2011-09-06  Paul Eggert  <eggert@cs.ucla.edu>
889

Paul Eggert's avatar
Paul Eggert committed
890
	* fileio.c: Fix bugs with large file offsets (Bug#9428).
891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906
	The previous code assumed that file offsets (off_t values) fit in
	EMACS_INT variables, which is not true on typical 32-bit hosts.
	The code messed up by falsely reporting buffer overflow in cases
	such as (insert-file-contents "big" nil 1 2) into an empty buffer
	when "big" contains more than 2**29 bytes, even though this
	inserts just one byte and does not overflow the buffer.
	(Finsert_file_contents): Store file offsets as off_t
	values, not as EMACS_INT values.  Check for overflow when
	converting between EMACS_INT and off_t.  When checking for
	buffer overflow or for overlap, take the offsets into account.
	Don't use EMACS_INT for small values where int suffices.
	When checking for overlap, fix a typo: ZV was used where
	ZV_BYTE was intended.
	(Fwrite_region): Don't assume off_t fits into 'long'.
	* buffer.h (struct buffer.modtime_size): Now off_t, not EMACS_INT.

907 908 909 910
2011-09-05  Michael Albinus  <michael.albinus@gmx.de>

	* dbusbind.c (xd_signature_cat): Rename from signature_cat.

Paul Eggert's avatar
Paul Eggert committed
911
2011-09-04  Paul Eggert  <eggert@cs.ucla.edu>
Paul Eggert's avatar
Paul Eggert committed
912

Paul Eggert's avatar
Paul Eggert committed
913
	sprintf-related integer and memory overflow issues (Bug#9412).
914 915

	* doprnt.c (doprnt): Support printing ptrdiff_t and intmax_t values.
916
	(esprintf, exprintf, evxprintf): New functions.
917
	* keyboard.c (command_loop_level): Now EMACS_INT, not int.
918
	(cmd_error): Kbd macro iterations count is now EMACS_INT, not int.
919 920 921 922 923 924 925 926 927 928 929
	(modify_event_symbol): Do not assume that the length of
	name_alist_or_stem is safe to alloca and fits in int.
	(Fexecute_extended_command): Likewise for function name and binding.
	(Frecursion_depth): Wrap around reliably on integer overflow.
	* keymap.c (push_key_description): First arg is now EMACS_INT, not int,
	since some callers pass EMACS_INT values.
	(Fsingle_key_description): Don't crash if symbol name contains more
	than MAX_ALLOCA bytes.
	* minibuf.c (minibuf_level): Now EMACS_INT, not int.
	(get_minibuffer): Arg is now EMACS_INT, not int.
	* lisp.h (get_minibuffer, push_key_description): Reflect API changes.
930
	(esprintf, exprintf, evxprintf): New decls.
931 932
	* window.h (command_loop_level, minibuf_level): Reflect API changes.

933 934
	* dbusbind.c (signature_cat): New function.
	(xd_signature, Fdbus_register_signal):
935 936
	Do not overrun buffer; instead, report string overflow.

937 938 939
	* dispnew.c (add_window_display_history): Don't overrun buffer.
	Truncate instead; this is OK since it's just a log.

940 941 942 943
	* editfns.c (Fcurrent_time_zone): Don't overrun buffer
	even if the time zone offset is outlandishly large.
	Don't mishandle offset == INT_MIN.

944 945 946
	* emacs.c (main) [NS_IMPL_COCOA]: Don't overrun buffer
	when creating daemon; the previous buffer-overflow check was incorrect.

947 948 949
	* eval.c (verror): Simplify by rewriting in terms of evxprintf,
	which has the guts of the old verror function.

950 951 952
	* filelock.c (lock_file_1, lock_file): Don't blindly alloca long name;
	use SAFE_ALLOCA instead.  Use esprintf to avoid int-overflow issues.

953 954
	* font.c: Include <float.h>, for DBL_MAX_10_EXP.
	(font_unparse_xlfd): Don't blindly alloca long strings.
955
	Don't assume XINT result fits in int, or that XFLOAT_DATA * 10
956
	fits in int, when using sprintf.  Use single snprintf to count
957 958 959 960 961 962
	length of string rather than counting it via multiple sprintfs;
	that's simpler and more reliable.
	(font_unparse_fcname): Use it to avoid sprintf buffer overrun.
	(generate_otf_features) [0 && HAVE_LIBOTF]: Use esprintf, not
	sprintf, in case result does not fit in int.

963 964 965
	* fontset.c (num_auto_fontsets): Now printmax_t, not int.
	(fontset_from_font): Print it.

966 967 968 969 970 971 972 973 974 975
	* frame.c (tty_frame_count): Now printmax_t, not int.
	(make_terminal_frame, set_term_frame_name): Print it.
	(x_report_frame_params): In X, window IDs are unsigned long,
	not signed long, so print them as unsigned.
	(validate_x_resource_name): Check for implausibly long names,
	and don't assume name length fits in 'int'.
	(x_get_resource_string): Don't blindly alloca invocation name;
	use SAFE_ALLOCA.  Use esprintf, not sprintf, in case result does
	not fit in int.

976 977
	* gtkutil.c: Include <float.h>, for DBL_MAX_10_EXP.
	(xg_check_special_colors, xg_set_geometry):
978 979
	Make sprintf buffers a bit bigger, to avoid potential buffer overrun.

980 981 982
	* lread.c (dir_warning): Don't blindly alloca buffer; use SAFE_ALLOCA.
	Use esprintf, not sprintf, in case result does not fit in int.

983 984 985 986 987 988
	* macros.c (executing_kbd_macro_iterations): Now EMACS_INT, not int.
	(Fend_kbd_macro): Don't mishandle MOST_NEGATIVE_FIXNUM by treating
	it as a large positive number.
	(Fexecute_kbd_macro): Don't assume repeat count fits in int.
	* macros.h (executing_kbd_macro_iterations): Now EMACS_INT, not int.

989 990 991
	* nsterm.m ((NSSize)windowWillResize): Use esprintf, not sprintf,
	in case result does not fit in int.

992 993 994 995 996 997 998 999
	* print.c (float_to_string): Detect width overflow more reliably.
	(print_object): Make sprintf buffer a bit bigger, to avoid potential
	buffer overrun.  Don't assume list length fits in 'int'.  Treat
	print length of 0 as 0, not as infinity; to be consistent with other
	uses of print length in this function.  Don't overflow print length
	index.  Don't assume hash table size fits in 'long', or that
	vectorlike size fits in 'unsigned long'.

1000 1001 1002
	* process.c (make_process): Use printmax_t, not int, to format
	process-name gensyms.

1003 1004
	* sysdep.c (snprintf) [! HAVE_SNPRINTF]: New function.

1005 1006 1007
	* term.c (produce_glyphless_glyph): Make sprintf buffer a bit bigger
	to avoid potential buffer overrun.

1008 1009 1010
	* xfaces.c (x_update_menu_appearance): Don't overrun buffer
	if X resource line is longer than 512 bytes.

1011 1012 1013
	* xfns.c (x_window): Make sprintf buffer a bit bigger
	to avoid potential buffer overrun.

1014 1015
	* xterm.c (x_io_error_quitter): Don't overrun sprintf buffer.

1016 1017
	* xterm.h (x_check_errors): Add ATTRIBUTE_FORMAT_PRINTF.

1018 1019
2011-09-04  Paul Eggert  <eggert@cs.ucla.edu>

1020
	Integer overflow fixes for scrolling, etc.
Paul Eggert's avatar
Paul Eggert committed
1021 1022
	Without these, Emacs silently mishandles large integers sometimes.
	For example, "C-u 4294967297 M-x recenter" was treated as if
1023 1024
	it were "C-u 1 M-x recenter" on a typical 64-bit host.

Paul Eggert's avatar
Paul Eggert committed
1025 1026
	* xdisp.c (try_window_id): Check Emacs fixnum range before
	converting to 'int'.
Paul Eggert's avatar
Paul Eggert committed
1027

Paul Eggert's avatar
Paul Eggert committed
1028
	* window.c (window_scroll_line_based, Frecenter):
1029 1030 1031 1032 1033 1034 1035 1036
	Check that an Emacs fixnum is in range before assigning it to 'int'.
	(Frecenter, Fmove_to_window_line): Use EMACS_INT, not int, for
	values converted from Emacs fixnums.
	(Frecenter): Don't wrap around a line count if it is out of 'int'
	range; instead, treat it as an extreme value.
	(Fset_window_configuration, compare_window_configurations):
	Use ptrdiff_t, not int, for index that might exceed 2 GiB.

Paul Eggert's avatar
Paul Eggert committed
1037 1038 1039
	* search.c (Freplace_match): Use ptrdiff_t, not int, for indexes
	that can exceed INT_MAX.  Check that EMACS_INT value is in range
	before assigning it to the (possibly-narrower) index.
1040 1041
	(match_limit): Don't assume that a fixnum can fit in 'int'.

Paul Eggert's avatar
Paul Eggert committed
1042
	* print.c (print_object): Use ptrdiff_t, not int, for index that can
Paul Eggert's avatar
Paul Eggert committed
1043 1044
	exceed INT_MAX.

Paul Eggert's avatar
Paul Eggert committed
1045
	* indent.c (position_indentation): Now takes ptrdiff_t, not int.
1046 1047 1048 1049
	(Fvertical_motion): Don't wrap around LINES values that don't fit
	in 'int'.  Instead, treat them as extreme values.  This is good
	enough for windows, which can't have more than INT_MAX lines anyway.

1050 1051
2011-09-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>

1052 1053
	* Require libxml/parser.h to avoid compilation warning.

1054 1055 1056 1057 1058
	* emacs.c (shut_down_emacs): Call xmlCleanupParser on shutdown.

	* xml.c (parse_region): Don't call xmlCleanupParser after parsing,
	since this reportedly can destroy thread storage.

1059 1060 1061 1062 1063
2011-08-30  Chong Yidong  <cyd@stupidchicken.com>

	* syntax.c (find_defun_start): Update all cache variables if
	exiting early (Bug#9401).

1064 1065
2011-08-30  Eli Zaretskii  <eliz@gnu.org>

1066 1067
	* image.c (x_bitmap_pixmap): Cast to int to avoid compiler warnings.

1068 1069 1070 1071 1072 1073 1074
	* xdisp.c (produce_stretch_glyph): No longer static, compiled also
	when HAVE_WINDOW_SYSTEM is not defined.  Support both GUI and TTY
	frames.  Call tty_append_glyph in the TTY case.  (Bug#9402)

	* term.c (tty_append_glyph): New function.
	(produce_stretch_glyph): Static function and its prototype deleted.

1075 1076
	* dispextern.h (produce_stretch_glyph, tty_append_glyph):
	Add prototypes.
1077

1078 1079 1080 1081 1082
2011-08-29  Paul Eggert  <eggert@cs.ucla.edu>

	* image.c (parse_image_spec): Check for nonnegative, not for positive,
	when checking :margin (Bug#9390).
	(IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR):
1083
	Rename from IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,
1084 1085
	so that the name doesn't mislead.  All uses changed.

1086 1087 1088 1089 1090
2011-08-28  Johan Bockgård  <bojohan@gnu.org>

	* term.c (init_tty) [HAVE_GPM]: Move mouse settings after
	set_tty_hooks.

1091 1092 1093 1094 1095 1096 1097
2011-08-27  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (move_it_to): Don't bail out early when reaching
	position beyond to_charpos, if we are scanning backwards.
	(move_it_vertically_backward): When DY == 0, make sure we get to
	the first character in the line after the newline.

1098 1099 1100 1101 1102 1103 1104 1105 1106 1107
2011-08-27  Paul Eggert  <eggert@cs.ucla.edu>

	* ccl.c: Improve and simplify overflow checking (Bug#9196).
	(ccl_driver): Do not generate an out-of-range pointer.
	(Fccl_execute_on_string): Remove unnecessary check for
	integer overflow, noted by Stefan Monnier in
	<http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00979.html>.
	Remove a FIXME that didn't need fixing.
	Simplify the newly-introduced buffer reallocation code.

1108 1109 1110 1111
2011-08-27  Juanma Barranquero  <lekktu@gmail.com>

	* makefile.w32-in ($(BLD)/alloc.$(O)): Depend on lib/verify.h.

Paul Eggert's avatar
Paul Eggert committed
1112
2011-08-26  Paul Eggert  <eggert@cs.ucla.edu>
1113

Paul Eggert's avatar
Paul Eggert committed
1114
	Integer and memory overflow issues (Bug#9196).
1115

1116 1117 1118 1119 1120
	* doc.c (get_doc_string): Rework so that
	get_doc_string_buffer_size is the actual buffer size, rather than
	being 1 less than the actual buffer size; this makes xpalloc more
	convenient.

Paul Eggert's avatar
Paul Eggert committed
1121 1122 1123 1124
	* image.c (x_allocate_bitmap_record, cache_image):
	* xselect.c (Fx_register_dnd_atom):
	Simplify previous changes by using xpalloc.

1125 1126 1127
	* buffer.c (overlay_str_len): Now ptrdiff_t, not EMACS_INT,
	since either will do and ptrdiff_t is convenient with xpalloc.

1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168
	* charset.c (charset_table_size)
	(struct charset_sort_data.priority): Now ptrdiff_t.
	(charset_compare): Don't overflow if priorities differ greatly.
	(Fsort_charsets): Don't assume list length fits in int.
	Check for size-calculation overflow when allocating sort data.
	(syms_of_charset): Allocate an initial charset table that is
	just under 64 KiB, to avoid problems with glibc malloc and mmap.

	* cmds.c (internal_self_insert): Check for size-calculation overflow.

	* composite.h (struct composition.glyph_len): Now int, not unsigned.
	The actual value is always <= INT_MAX, and leaving it unsigned made
	overflow checking harder.

	* dispextern.h (struct glyph_matrix.rows_allocated)
	(struct face_cache.size): Now ptrdiff_t, for convenience in use
	with xpalloc.  The values are still always <= INT_MAX.

	* indent.c (compute_motion): Adjust to region_cache_forward sig change.

	* lisp.h (xnmalloc, xnrealloc, xpalloc): New decls.
	(SAFE_NALLOCA): New macro.

	* region-cache.c (struct boundary.pos, find_cache_boundary)
	(move_cache_gap, insert_cache_boundary, delete_cache_boundaries)
	(set_cache_region, invalidate_region_cache)
	(revalidate_region_cache, know_region_cache, region_cache_forward)
	(region_cache_backward, pp_cache):
	Use ptrdiff_t, not EMACS_INT, since either will do.  This is needed
	so that ptrdiff_t * can be passed to xpalloc.
	(struct region_cache): Similarly, for gap_start, gap_len, cache_len,
	beg_unchanged, end_unchanged, buffer_beg, buffer_end members.
	(pp_cache): Don't assume cache_len fits in int.
	* region-cache.h: Adjust extern decls to match.

	* search.c (scan_buffer, Freplace_match): Use ptrdiff_t, not
	EMACS_INT, since either will do, for xpalloc.

	* alloc.c: Include verify.h, and check that int fits in ptrdiff_t.
	(xnmalloc, xnrealloc, xpalloc): New functions.

1169 1170 1171 1172
	* bidi.c (bidi_shelve_header_size): New constant.
	(bidi_cache_ensure_space, bidi_shelve_cache): Use it.
	(bidi_cache_ensure_space): Avoid integer overflow when allocating.

1173
	* bidi.c (bidi_cache_shrink):
1174 1175 1176 1177
	* buffer.c (overlays_at, overlays_in, record_overlay_string)
	(overlay_strings):
	Don't update size of array until after memory allocation succeeds,
	because xmalloc/xrealloc may not return.
1178 1179 1180 1181
	(struct sortstrlist.bytes): Now ptrdiff_t, as EMACS_INT doesn't help
	now that we have proper integer overflow checking.
	(record_overlay_string, overlay_strings): Catch overflows when
	calculating size of overlay_str_buf.
1182

1183 1184 1185 1186 1187
	* callproc.c (Fcall_process): Check for size overflow when
	calculating size of args2.
	(child_setup): Avoid overflow by using size_t rather than ptrdiff_t.
	Normally we prefer signed values, but sticking with ptrdiff_t would
	require adding more-complicated checks.
1188 1189 1190 1191

	* ccl.c (Fccl_execute_on_string): Check for memory overflow.
	Use ptrdiff_t rather than EMACS_INT where ptrdiff_t will do.
	Redo buffer-overflow calculations to avoid integer overflow.
1192
	Add a FIXME comment where memory seems to be over-allocated.
1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231

	* character.c (Fstring): Check for size-calculation overflow.

	* coding.c (produce_chars): Redo buffer-overflow calculations to avoid
	unnecessary integer overflow.  Check for size overflow.
	(encode_coding_object): Don't update size until xmalloc succeeds.

	* composite.c (get_composition_id): Check for overflow in glyph
	length calculations.

	Integer and memory overflow fixes for display code.
	* dispextern.h (struct glyph_pool.nglyphs): Now ptrdiff_t, not int.
	* dispnew.c (adjust_glyph_matrix, realloc_glyph_pool)
	(scrolling_window): Check for overflow in size calculations.
	(line_draw_cost, realloc_glyph_pool, add_row_entry):
	Don't assume glyph table len fits in int.
	(struct row_entry.bucket, row_entry_pool_size, row_entry_idx)
	(row_table_size): Now ptrdiff_t, not int.
	(scrolling_window): Avoid overflow in size calculations.
	Don't update size until allocation succeeds.
	* fns.c (concat): Check for overflow in size calculations.
	(next_almost_prime): Verify NEXT_ALMOST_PRIME_LIMIT.
	* lisp.h (RANGED_INTEGERP, TYPE_RANGED_INTEGERP): New macros.
	(NEXT_ALMOST_PRIME_LIMIT): New constant.

	* doc.c (get_doc_string_buffer_size): Now ptrdiff_t, not int.
	(get_doc_string): Check for size calculation overflow.
	Don't update size until allocation succeeds.
	(get_doc_string, Fsubstitute_command_keys): Use ptrdiff_t, not
	EMACS_INT, where ptrdiff_t will do.
	(Fsubstitute_command_keys): Check for string overflow.

	* editfns.c (set_time_zone_rule): Don't assume environment length
	fits in int.
	(message_length): Now ptrdiff_t, not int.
	(Fmessage_box): Don't update size until allocation succeeds.
	Don't assume message length fits in int.
	(Fformat): Use ptrdiff_t, not EMACS_INT, where ptrdiff_t will do.

1232 1233 1234 1235
	* emacs.c (main): Do not reallocate argv, since there is a null at
	the end that can be overwritten, and this way there's no need to
	worry about size-calculation overflow.
	(sort_args): Check for size-calculation overflow.
1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274

	* eval.c (init_eval_once, grow_specpdl): Don't update size until
	alloc succeeds.
	(call_debugger, grow_specpdl): Redo calculations to avoid overflow.

	* frame.c (set_menu_bar_lines, x_set_frame_parameters)
	(x_set_scroll_bar_width, x_figure_window_size):
	Check for integer overflow.
	(x_set_alpha): Do not assume XINT fits in int.

	* frame.h (struct frame): Use int, not EMACS_INT, where int works.
	This is for the members text_lines, text_cols, total_lines, total_cols,
	where the system imposes an 'int' limit.

	* fringe.c (Fdefine_fringe_bitmap):
	Don't update size until alloc works.

	* ftfont.c (ftfont_get_open_type_spec, setup_otf_gstring)
	(ftfont_shape_by_flt): Check for integer overflow in size calculations.

	* gtkutil.c (get_utf8_string, xg_store_widget_in_map):
	Check for size-calculation overflow.
	(get_utf8_string): Use ptrdiff_t, not size_t, where either will
	do, as we prefer signed integers.
	(id_to_widget.max_size, id_to_widget.used)
	(xg_store_widget_in_map, xg_remove_widget_from_map)
	(xg_get_widget_from_map, xg_get_scroll_id_for_window)
	(xg_remove_scroll_bar, xg_update_scrollbar_pos):
	Use and return ptrdiff_t, not int.
	(xg_gtk_scroll_destroy): Don't assume ptrdiff_t fits in int.
	* gtkutil.h: Change prototypes to match the above.

	* image.c (RANGED_INTEGERP, TYPE_RANGED_INTEGERP): Remove; these
	are duplicate now that they've been promoted to lisp.h.
	(x_allocate_bitmap_record, x_alloc_image_color)
	(make_image_cache, cache_image, xpm_load):
	Don't update size until alloc is done.
	(xpm_load, lookup_rgb_color, lookup_pixel_color, x_to_xcolors)
	(x_detect_edges):
1275
	Check for size calculation overflow.
1276 1277 1278
	(ct_colors_allocated_max): New constant.
	(x_to_xcolors, x_detect_edges): Reorder multiplicands to avoid
	overflow.
1279

1280 1281 1282 1283 1284
	* keyboard.c (read_char, menu_bar_items, tool_bar_items)
	(read_char_x_menu_prompt, read_char_minibuf_menu_width)
	(read_char_minibuf_menu_prompt, follow_key, read_key_sequence):
	Use ptrdiff_t, not int, to count maps.
	(read_char_minibuf_menu_prompt): Check for overflow in size
1285 1286
	calculations.  Don't update size until allocation succeeds.
	Redo calculations to avoid overflow.
1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337
	* keyboard.h: Change prototypes to match the above.

	* keymap.c (cmm_size, current_minor_maps): Use ptrdiff_t, not int,
	to count maps.
	(current_minor_maps): Check for size calculation overflow.
	* keymap.h: Change prototypes to match the above.

	* lread.c (read1, init_obarray): Don't update size until alloc done.

	* macros.c (Fstart_kbd_macro): Don't update size until alloc done.
	(store_kbd_macro_char): Reorder multiplicands to avoid overflow.

	* nsterm.h (struct ns_color_table.size, struct ns_color_table.avail):
	Now ptrdiff_t, not int.
	* nsterm.m (ns_index_color): Use ptrdiff_t, not int, for table indexes.
	(ns_draw_fringe_bitmap): Rewrite to avoid overflow.

	* process.c (Fnetwork_interface_list): Check for overflow
	in size calculation.

	* region-cache.c (move_cache_gap): Check for size calculation overflow.

	* scroll.c (do_line_insertion_deletion_costs): Check for size calc
	overflow.  Don't bother calling xmalloc when xrealloc will do.

	* search.c (Freplace_match): Check for size calculation overflow.
	(Fset_match_data): Don't assume list lengths fit in 'int'.

	* sysdep.c (system_process_attributes): Use ptrdiff_t, not int,
	for command line length.  Do not attempt to address one before the
	beginning of an array, as that's not portable.

	* term.c (max_frame_lines): Remove; unused.
	(encode_terminal_src_size, encode_terminal_dst_size): Now ptrdiff_t,
	not int.
	(encode_terminal_code, calculate_costs): Check for size
	calculation overflow.
	(encode_terminal_code): Use ptrdiff_t, not int, to record glyph
	table lengths and related sizes.  Don't update size until alloc
	done.  Redo calculations to avoid overflow.
	(calculate_costs): Don't bother calling xmalloc when xrealloc will do.

	* termcap.c (tgetent): Use ptrdiff_t, not int, to record results of
	subtracting pointers.
	(gobble_line): Check for overflow more carefully.  Don't update size
	until alloc done.

	* tparam.c (tparam1): Use ptrdiff_t, not int, for sizes.
	Don't update size until alloc done.
	Redo size calculations to avoid overflow.
	Check for size calculation overflow.
1338
	(main) [DEBUG]: Fix typo in invoking tparam1.
1339 1340 1341 1342 1343

	* xdisp.c (store_mode_line_noprop_char, x_consider_frame_title):
	Use ptrdiff_t, not int, for sizes.
	(store_mode_line_noprop_char): Don't update size until alloc done.

1344 1345 1346 1347 1348 1349
	* xfaces.c (lface_id_to_name_size, Finternal_make_lisp_face):
	Use ptrdiff_t, not int, for sizes.
	(Finternal_make_lisp_face, cache_face):
	Check for size calculation overflow.
	(cache_face): Treat size calculation overflows as if they were
	memory exhaustion (the usual treatment), rather than aborting.
1350 1351 1352 1353 1354 1355

	* xfns.c (x_encode_text, x_set_name_internal)
	(Fx_change_window_property): Use ptrdiff_t, not int, to count
	sizes, since they can exceed INT_MAX in size.  Check for size
	calculation overflow.

1356 1357
	* xgselect.c (gfds_size): Now ptrdiff_t, for convenience with xpalloc.
	(xg_select): Check for size calculation overflow.
1358 1359
	Don't update size until alloc done.

1360
	* xrdb.c (get_environ_db): Don't assume path length fits in int,
1361
	as sprintf is limited to int lengths.
1362

1363 1364
	* xselect.c (X_LONG_SIZE, X_SHRT_MAX, X_SHRT_MIN, X_LONG_MAX)
	(X_LONG_MIN): New macros.
1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382
	Use them to make the following changes clearer.
	(MAX_SELECTION_QUANTUM): Make the other bounds on this value clearer.
	This change doesn't affect the value now, but it may help remind
	future maintainers not to raise the value too much later.
	(SELECTION_QUANTUM): Remove, replacing with ...
	(selection_quantum): ... new function, which avoids overflow.
	All uses changed.
	(struct selection_data.size): Now ptrdiff_t, not int, to avoid
	assumption that selection length fits in 'int'.
	(x_reply_selection_request, x_handle_selection_request)
	(x_get_window_property, receive_incremental_selection)
	(x_get_window_property_as_lisp_data, selection_data_to_lisp_data)
	(lisp_data_to_selection_data, clean_local_selection_data):
	Use ptrdiff_t, not int, to record length of selection.
	(x_reply_selection_request, x_get_window_property)
	(receive_incremental_selection, x_property_data_to_lisp):
	Redo calculations to avoid overflow.
	(x_reply_selection_request): When sending hint, ceiling it at
1383
	X_LONG_MAX rather than relying on wraparound overflow to send
1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408
	something.
	(x_get_window_property, receive_incremental_selection)
	(lisp_data_to_selection_data, x_property_data_to_lisp):
	Check for size-calculation overflow.
	(x_get_window_property, receive_incremental_selection)
	(lisp_data_to_selection_data, Fx_register_dnd_atom):
	Don't store size until memory allocation succeeds.
	(x_get_window_property): Plug memory leak on memory exhaustion.
	Don't double-block input; malloc is safe here.  Don't assume 2**34
	- 4 fits in unsigned long.  Add an xassert to check
	XGetWindowProperty overflow.  Be more careful about overflow
	calculations, and distinguish size from memory overflow better.
	(receive_incremental_selection): When tracing, don't assume
	unsigned int is less than INT_MAX.
	(x_selection_data_to_lisp_data): Remove unnecessary (and in theory