- 2011-05-04 Paul Eggert <eggert@cs.ucla.edu>
++2011-05-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * term.c (vfatal): Remove stray call to va_end.
+ It's not needed and the C Standard doesn't allow it here anyway.
+
+ Use C99's va_copy to avoid undefined behavior on x86-64 GNU/Linux.
+ * eval.c (verror): doprnt a copy of ap, not the original. (Bug#8545)
+
+ * eval.c (verror): OK to create a string of up to MOST_POSITIVE_FIXNUM
+ bytes.
+
+ * term.c: Don't include <stdarg.h>, as <lisp.h> does that.
+
+ Arithmetic overflows now return float rather than wrapping around.
+ (Bug#8611).
+ * data.c: Include <intprops.h>.
+ (arith_driver): Use floating point if the accumulator would otherwise
+ go out of EMACS_INT range.
+ (arith_driver, Fadd1, Fsub1): Use floating point if the result is
+ out of Emacs fixnum range.
+ * bytecode.c (exec_byte_code): Likewise, for Bsub1, Badd1, Bnegate.
+ * floatfns.c (Fexpt): Likewise.
+
+ * callproc.c (Fcall_process): Use 'volatile' to avoid vfork clobbering.
+
+ * process.c (Fformat_network_address): Fix typo: args2 -> *args2.
+
+ * xmenu.c (set_frame_menubar): Fix typo: int * -> int (3 times).
+
+ * coding.c (detect_coding_charset): Fix typo: * 2 -> *4 (Bug#8601).
+
+ * charset.h (struct charset.code_space): Now has 15 elements, not 16.
+ * charset.c (Fdefine_charset_internal): Don't initialize
+ charset.code_space[15]. The value was garbage, on hosts with
+ 32-bit int (Bug#8600).
+
+ * lread.c (read_integer): Be more consistent with string-to-number.
+ Use string_to_number to do the actual conversion; this avoids
+ rounding errors and fixes some other screwups. Without this fix,
+ for example, #x1fffffffffffffff was misread as -2305843009213693952.
+ (digit_to_number): Move earlier, for benefit of read_integer.
+ Return -1 if the digit is out of range for the base, -2 if it is
+ not a digit in any supported base. (Bug#8602)
+
+ * doprnt.c (doprnt): Support arbitrary pI values, such as "I64".
+
+ * dispnew.c (scrolling_window): Return 1 if we scrolled,
+ to match comment at start of function. This also removes a
+ GCC warning about overflow in a 32+64-bit port.
+
+ * lisp.h (EMACS_INT, EMACS_UINT, BITS_PER_EMACS_INT, pI): Simplify.
+
+ * dbusbind.c: Do not use XPNTR on a value that may be an integer.
+ Reported by Stefan Monnier in
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00919.html>.
+ (xd_remove_watch, Fdbus_init_bus, xd_read_queued_messages): Use
+ SYMBOLP-guarded XSYMBOL, not XPNTR.
+
+ * lisp.h (EMACS_INTPTR): Remove. All uses changed to intptr_t.
+ (EMACS_UINTPTR): Likewise, with uintptr_t.
+
+ * lisp.h: Prefer 64-bit EMACS_INT if available.
+ (EMACS_INT, EMACS_UINT, BITS_PER_EMACS_INT, pI): Define to 64-bit
+ on 32-bit hosts that have 64-bit int, so that they can access
+ large files.
+
+ * lread.c, process.c: Do not include <inttypes.h>; lisp.h does it now.
+
+ Prefer intptr_t/uintptr_t for integers the same widths as pointers.
+ This removes an assumption that EMACS_INT and long are the same
+ width as pointers. The assumption is true for Emacs porting targets
+ now, but we want to make other targets possible.
+ * lisp.h: Include <inttypes.h>, for INTPTR_MAX, UINTPTR_MAX.
+ (EMACS_INTPTR, EMACS_UINTPTR): New macros.
+ In the rest of the code, change types of integers that hold casted
+ pointers to EMACS_INTPTR and EMACS_UINTPTR, systematically
+ replacing EMACS_INT, long, EMACS_UINT, and unsigned long.
+ (XTYPE): Don't cast arg to EMACS_UINT; normally is not needed.
+ (XSET): Cast type of XTYPE arg to EMACS_INTPTR; it is needed here.
+ No need to cast type when ORing.
+ (XPNTR): Return a value of type EMACS_INTPTR or EMACS_UINTPTR.
+ * alloc.c (lisp_align_malloc): Remove a no-longer-needed cast.
+ * doc.c (store_function_docstring): Use EMACS_INTPTR, so as not to
+ assume EMACS_INT is the same width as char *.
+ * gtkutil.c (xg_gtk_scroll_destroy, xg_tool_bar_button_cb):
+ (xg_tool_bar_callback, xg_tool_bar_help_callback, xg_make_tool_item):
+ Remove no-longer-needed casts.
+ (xg_create_scroll_bar, xg_tool_bar_button_cb, xg_tool_bar_callback):
+ (xg_tool_bar_help_callback, xg_make_tool_item):
+ Use EMACS_INTPTR to hold an integer
+ that will be cast to void *; this can avoid a GCC warning
+ if EMACS_INT is not the same width as void *.
+ * menu.c (find_and_call_menu_selection): Remove no-longer-needed cast.
+ * xdisp.c (display_echo_area_1, resize_mini_window_1):
+ (current_message_1, set_message_1):
+ Use a local to convert to proper width without a cast.
+ * xmenu.c (dialog_selection_callback): Likewise.
+
+ * sysdep.c (get_random): Don't assume EMACS_INT is no wider than long.
+ Also, don't assume VALBITS / RAND_BITS is less than 5,
+ and don't rely on undefined behavior when shifting a 1 left into
+ the sign bit.
+ * lisp.h (get_random): Change signature to match.
+
+ * lread.c (hash_string): Use size_t, not int, for hash computation.
+ Normally we prefer signed values; but hashing is special, because
+ it's better to use unsigned division on hash table sizes so that
+ the remainder is nonnegative. Also, size_t is the natural width
+ for hashing into memory. The previous code used 'int', which doesn't
+ retain enough info to hash well into very large tables.
+ (oblookup, oblookup_last_bucket_number, Funintern): Likewise.
+
+ * dbusbind.c: Don't possibly lose pointer info when converting.
+ (xd_remove_watch, Fdbus_init_bus, xd_read_queued_messages):
+ Use XPNTR rather than XHASH, so that the high-order bits of
+ the pointer aren't lost when converting through void *.
+
+ * eval.c (Fautoload): Don't double-shift a pointer.
+
+ * fns.c (Frandom): Let EMACS_UINT be wider than unsigned long.
+
+ 2011-05-05 Eli Zaretskii <eliz@gnu.org>
+
+ * w32heap.c (allocate_heap) [USE_LISP_UNION_TYPE || USE_LSB_TAG]:
+ New version that can reserve upto 2GB of heap space.
+
+ 2011-05-05 Chong Yidong <cyd@stupidchicken.com>
+
+ * nsfns.m (Fns_read_file_name): Doc fix (Bug#8534).
+
+ 2011-05-05 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnutls.c (fn_gnutls_certificate_set_x509_key_file): Add alias to
+ `gnutls_certificate_set_x509_key_file'.
+
+ 2011-05-05 Juanma Barranquero <lekktu@gmail.com>
+
+ * makefile.w32-in ($(BLD)/image.$(O), $(BLD)/process.$(O)):
+ Update dependencies.
+
+ 2011-05-04 Juanma Barranquero <lekktu@gmail.com>
+
+ * gnutls.h (emacs_gnutls_write, emacs_gnutls_read):
+ * gnutls.c (emacs_gnutls_write, emacs_gnutls_read):
+ Remove unused parameter `fildes'.
+ * process.c (read_process_output, send_process): Don't pass it.
+
+ 2011-05-04 Juanma Barranquero <lekktu@gmail.com>
+
+ Fix previous change: the library cache is defined in w32.c.
+ * image.c (CACHE_IMAGE_TYPE) [!HAVE_NTGUI]: Define to noop.
+ (Finit_image_library): Wrap Vlibrary_cache on "#ifdef HAVE_NTGUI".
+
+ 2011-05-04 Juanma Barranquero <lekktu@gmail.com>
+
+ Implement dynamic loading of GnuTLS on Windows.
+
+ * gnutls.h (GNUTLS_EMACS_ERROR_NOT_LOADED): New macro.
+ (emacs_gnutls_write, emacs_gnutls_read): Mark as extern.
+ (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno):
+ Declare.
+
+ * gnutls.c (Qgnutls_dll): Define.
+ (DEF_GNUTLS_FN, LOAD_GNUTLS_FN): New macros.
+ (gnutls_*): Declare function pointers.
+ (init_gnutls_functions): New function to initialize function pointers.
+ (emacs_gnutls_handshake, Fgnutls_error_string, Fgnutls_deinit)
+ (emacs_gnutls_global_init, Fgnutls_bye): Use function pointers.
+ (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno):
+ Wrappers for gnutls_record_check_pending and gnutls_transport_set_errno.
+ (emacs_gnutls_write, emacs_gnutls_read)
+ (emacs_gnutls_handle_error, Fgnutls_error_fatalp)
+ (Fgnutls_available_p): New function.
+ (Fgnutls_boot): Call Fgnutls_available_p. Use function pointers.
+ (syms_of_gnutls) <Qgnutls_dll>: Initialize and staticpro it.
+ (syms_of_gnutls) <Sgnutls_available_p>: defsubr it.
+
+ * image.c: Include w32.h.
+ (Vimage_type_cache): Delete.
+ (syms_of_image) <Vimage_type_cache>: Don't initialize and staticpro it.
+ (CACHE_IMAGE_TYPE, Finit_image_library): Use Vlibrary_cache instead.
+ (w32_delayed_load): Move to w32.c.
+
+ * w32.h (VlibraryCache, QCloaded_from, w32_delayed_load): Declare.
+
+ * w32.c (QCloaded_from, Vlibrary_cache): Define.
+ (w32_delayed_load): Move from image.c. When loading a library, record
+ its filename in the :loaded-from property of the library id.
+ (globals_of_w32) <QCloaded_from, Vlibrary_cache>:
+ Initialize and staticpro them.
+ (emacs_gnutls_pull, emacs_gnutls_push): Call emacs_gnutls_* functions.
+
+ * process.c: Include lisp.h before w32.h, not after.
+ (wait_reading_process_output): Call emacs_gnutls_record_check_pending
+ instead of gnutls_record_check_pending.
+
+ * callproc.c, emacs.c: Include lisp.h before w32.h, not after.
+
2011-05-04 Teodor Zlatanov <tzz@lifelogs.com>
* gnutls.c (Fgnutls_boot): Support :keylist and :crlfiles options