1. 09 Nov, 2015 1 commit
    • Paul Eggert's avatar
      Use INT_ADD_WRAPV etc. to check integer overflow · 10873055
      Paul Eggert authored
      * src/alloc.c (xnmalloc, xnrealloc, xpalloc, Fmake_string):
      * src/buffer.c (record_overlay_string, overlay_strings):
      * src/casefiddle.c (casify_object):
      * src/ccl.c (Fccl_execute_on_string):
      * src/character.c (char_width, c_string_width, lisp_string_width)
      (count_size_as_multibyte, string_escape_byte8):
      * src/coding.c (coding_alloc_by_realloc, produce_chars):
      * src/data.c (arith_driver):
      * src/dispnew.c (realloc_glyph_pool, init_display):
      * src/editfns.c (styled_format):
      * src/fns.c (Ffillarray):
      * src/ftfont.c (ftfont_shape_by_flt):
      * src/gnutls.c (gnutls_hex_string):
      * src/gtkutil.c (get_utf8_string):
      * src/image.c (x_to_xcolors, x_detect_edges, png_load_body):
      * src/keymap.c (Fkey_description):
      * src/lisp.h (SAFE_ALLOCA_LISP):
      * src/term.c (encode_terminal_code):
      * src/tparam.c (tparam1):
      * src/xselect.c (x_property_data_to_lisp):
      * src/xsmfns.c (smc_save_yourself_CB):
      * src/xterm.c (x_term_init):
      When checking for integer overflow, prefer INT_MULTIPLY_WRAPV to
      more-complicated code involving division and/or
      INT_MULTIPLY_OVERFLOW, and similarly for INT_ADD_WRAPV and
      subtraction and/or INT_ADD_OVERFLOW.
      * src/casefiddle.c (casify_object): Simplify multibyte size check.
      * src/character.c: Remove some obsolete ‘#ifdef emacs’s.
      * src/data.c (arith_driver): Also check for division overflow,
      as that’s now possible given that the accumulator can now contain
      any Emacs integer.
      * src/lisp.h (lisp_word_count): Remove; no longer used.
      10873055
  2. 27 Jun, 2015 1 commit
  3. 31 May, 2015 1 commit
    • Paul Eggert's avatar
      Remove unused DEFSYMs · 0c2a3cf6
      Paul Eggert authored
      Remove DEFSYMs that aren't used at the C level.  Also:
      * src/decompress.c (Qzlib_dll):
      * src/font.c (Qunicode_sip):
      * src/frame.c (Qtip_frame):
      * src/ftfont.c (Qserif):
      * src/gnutls.c (Qgnutls_dll):
      * src/xml.c (Qlibxml2_dll):
      Move from here ...
      * src/w32fns.c (syms_of_w32fns): ... to here,
      as these are used only on MS-Windows.
      0c2a3cf6
  4. 21 May, 2015 1 commit
  5. 25 Apr, 2015 1 commit
    • Paul Eggert's avatar
      Port --enable-gcc-warnings to GCC 5.1 x86-64 · 52ba851d
      Paul Eggert authored
      * lib-src/ebrowse.c (dump_sym):
      * lib-src/hexl.c (main):
      * src/ccl.c (ccl_driver):
      * src/character.c (string_escape_byte8):
      * src/dbusbind.c (xd_retrieve_arg, xd_add_watch):
      * src/gnutls.c (Fgnutls_boot):
      * src/gtkutil.c (xg_check_special_colors):
      * src/image.c (x_build_heuristic_mask):
      * src/print.c (safe_debug_print, print_object):
      * src/term.c (produce_glyphless_glyph):
      * src/xdisp.c (get_next_display_element)
      (produce_glyphless_glyph):
      * src/xterm.c (x_draw_glyphless_glyph_string_foreground):
      Don't use a signed format to print an unsigned integer, or vice
      versa.  GCC 5.1's new -Wformat-signedness option warns about this.
      * src/image.c (png_load_body, jpeg_load_body):
      Silence a bogus setjump diagnostic from GCC 5.1 (GCC bug 54561).
      52ba851d
  6. 11 Apr, 2015 1 commit
    • Chris Zheng's avatar
      Support GnuTLS v3.4 and later on MS-Windows · dc79845a
      Chris Zheng authored
      * src/gnutls.c (syms_of_gnutls) <libgnutls-version>: New DEFSYM.
      * lisp/term/w32-win.el (dynamic-library-alist): Determine which
      GnuTLS DLL to load according to value of libgnutls-version.
      
      Fixes: bug#20294
      
      Copyright-paperwork-exempt: yes
      dc79845a
  7. 16 Jan, 2015 1 commit
    • Paul Eggert's avatar
      Give up on -Wsuggest-attribute=const · 0adc75af
      Paul Eggert authored
      The attribute doesn't help performance significantly, and the
      warning seems to be more trouble than it's worth.  See the thread at:
      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00361.html
      * configure.ac (WERROR_CFLAGS): Don't use -Wsuggest-attribute=const.
      * lib-src/make-docfile.c (write_globals):
      Remove special hack for Fnext_read_file_uses_dialog_p.
      * src/decompress.c (Fzlib_available_p):
      * src/gnutls.c (Fgnutls_available_p):
      * src/gtkutil.h (xg_uses_old_file_dialog):
      * src/xdisp.c (Ftool_bar_height):
      * src/xmenu.c (popup_activated):
      No longer const, since it's not const on at lest some
      configurations, and we shouldn't lie to the compiler.
      0adc75af
  8. 15 Jan, 2015 1 commit
    • Ted Zlatanov's avatar
      Flag :unknown-ca and :self-signed SSL certs (Bug#19404) · 3b7eed4e
      Ted Zlatanov authored
      Fixes: debbugs:19404
      
      * gnutls.c (init_gnutls_functions): Import gnutls_x509_crt_check_issuer.
      (Fgnutls_peer_status): Use it to set the :self-signed flag.
      Rename the previous :self-signed to :unknown-ca.
      (Fgnutls_peer_status_warning_describe): Explain :unknown-ca flag.
      3b7eed4e
  9. 13 Jan, 2015 1 commit
    • Dmitry Antipov's avatar
      Support const and noreturn DEFUN attributes. · ad9c4a40
      Dmitry Antipov authored
      * lib-src/make-docfile.c (struct global): New field 'flags'.
      (DEFUN_noreturn, DEFUN_const): New enum bitfields.
      (add_global): Now return pointer to global.
      (write_globals): Add _Noreturn and ATTRIBUTE_CONST attributes
      if requested by global's flags.
      (stream_match): New function.
      (scan_c_stream): Recognize 'attributes:' of DEFUN.
      
      * src/callint.c (Finteractive):
      * src/character.c (Fcharacterp, Fmax_char):
      * src.data.c (Feq, Fnull, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp)
      (Fstringp, Fchar_or_string_p, Fintegerp, Fnatnump, Fnumberp)
      (Ffloatp, Fbyteorder):
      * src/decompress.c (Fzlib_available_p):
      * src/fns.c (Fidentity):
      * src/frame.c (Fframe_windows_min_size):
      * src/gnutls.c (Fgnutls_error_p, Fgnutls_available_p):
      * src/window.c (Fwindow__sanitize_window_sizes):
      * src/xdisp.c (Ftool_bar_height):
      * src/xfaces.c (Fface_attribute_relative_p): Add const attribute.
      * src/emacs.c (Fkill_emacs):
      * src/eval.c (Fthrow):
      * src/keyboard.c (Ftop_level, Fexit_recursive_edit)
      (Fabor_recursive_edit): Add noreturn attribute.
      ad9c4a40
  10. 05 Jan, 2015 1 commit
    • Paul Eggert's avatar
      Compute C decls for DEFSYMs automatically · 58f2d6ef
      Paul Eggert authored
      Fixes Bug#15880.
      This patch also makes Q constants (e.g., Qnil) constant addresses
      from the C point of view.
      * make-docfile.c: Revamp to generate table of symbols, too.
      Include <stdbool.h>.
      (xstrdup): New function.
      (main): Don't process the same file twice.
      (SYMBOL): New constant in enum global_type.
      (struct symbol): Turn 'value' member into a union, either v.value
      for int or v.svalue for string.  All uses changed.
      (add_global): New arg svalue, which overrides value, so that globals
      can have a string value.
      (close_emacs_global): New arg num_symbols; all uses changed.
      Output lispsym decl.
      (write_globals): Output symbol globals too.  Output more
      ATTRIBUTE_CONST, now that Qnil etc. are C constants.
      Output defsym_name table.
      (scan_c_file): Move most of guts into ...
      (scan_c_stream): ... new function.  Scan for DEFSYMs and
      record symbols found.  Don't read past EOF if file doesn't
      end in newline.
      * alloc.c, bidi.c, buffer.c, bytecode.c, callint.c, casefiddle:
      * casetab.c, category.c, ccl.c, charset.c, chartab.c, cmds.c, coding.c:
      * composite.c, data.c, dbusbind.c, decompress.c, dired.c, dispnew.c:
      * doc.c, editfns.c, emacs.c, eval.c, fileio.c, fns.c, font.c, fontset.c:
      * frame.c, fringe.c, ftfont.c, ftxfont.c, gfilenotify.c, gnutls.c:
      * image.c, inotify.c, insdel.c, keyboard.c, keymap.c, lread.c:
      * macfont.m, macros.c, minibuf.c, nsfns.m, nsfont.m, nsimage.m:
      * nsmenu.m, nsselect.m, nsterm.m, print.c, process.c, profiler.c:
      * search.c, sound.c, syntax.c, term.c, terminal.c, textprop.c, undo.c:
      * window.c, xdisp.c, xfaces.c, xfns.c, xftfont.c, xmenu.c, xml.c:
      * xselect.c, xsettings.c, xterm.c:
      Remove Q vars that represent symbols (e.g., Qnil, Qt, Qemacs).
      These names are now defined automatically by make-docfile.
      * alloc.c (init_symbol): New function.
      (Fmake_symbol): Use it.
      (c_symbol_p): New function.
      (valid_lisp_object_p, purecopy): Use it.
      * alloc.c (marked_pinned_symbols):
      Use make_lisp_symbol instead of make_lisp_ptr.
      (garbage_collect_1): Mark lispsym symbols.
      (CHECK_ALLOCATED_AND_LIVE_SYMBOL): New macro.
      (mark_object): Use it.
      (sweep_symbols): Sweep lispsym symbols.
      (symbol_uses_obj): New function.
      (which_symbols): Use it.  Work for lispsym symbols, too.
      (init_alloc_once): Initialize Vpurify_flag here; no need to wait,
      since Qt's address is already known now.
      (syms_of_alloc): Add lispsym count to symbols_consed.
      * buffer.c (init_buffer_once): Compare to Qnil, not to make_number (0),
      when testing whether storage is all bits zero.
      * dispextern (struct image_type):
      * font.c (font_property_table):
      * frame.c (struct frame_parm_table, frame_parms):
      * keyboard.c (scroll_bar_parts, struct event_head):
      * xdisp.c (struct props):
      Use XSYMBOL_INIT (Qfoo) and struct Lisp_Symbol * rather than &Qfoo and
      Lisp_Object *, since Qfoo is no longer an object whose address can be
      taken.  All uses changed.
      * eval.c (run_hook): New function.  Most uses of Frun_hooks changed to
      use it, so that they no longer need to take the address of a Lisp sym.
      (syms_of_eval): Don't use DEFSYM on Vrun_hooks, as it's a variable.
      * frame.c (syms_of_frame): Add defsyms for the frame_parms table.
      * keyboard.c (syms_of_keyboard): Don't DEFSYM Qmenu_bar here.
      DEFSYM Qdeactivate_mark before the corresponding var.
      * keymap.c (syms_of_keymap): Use DEFSYM for Qmenu_bar and Qmode_line
      instead of interning their symbols; this avoids duplicates.
      (LISP_INITIALLY, TAG_PTR)
      (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END, XSYMBOL_INIT):
      New macros.
      (LISP_INITIALLY_ZERO): Use it.
      (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol)
      (EXFUN, DEFUN_ARGS_MANY, DEFUN_ARGS_UNEVALLED, DEFUN_ARGS_*):
      Move decls up, to avoid forward uses.  Include globals.h earlier, too.
      (make_lisp_symbol): New function.
      (XSETSYMBOL): Use it.
      (DEFSYM): Now just a placeholder for make-docfile.
      * lread.c (DEFINE_SYMBOLS): Define, for globals.h.
      (intern_sym): New function, with body taken from old intern_driver.
      (intern_driver): Use it.  Last arg is now Lisp integer, not ptrdiff_t.
      All uses changed.
      (define_symbol): New function.
      (init_obarray): Define the C symbols taken from lispsym.
      Use plain DEFSYM for Qt and Qnil.
      * syntax.c (init_syntax_once): No need to worry about
      Qchar_table_extra_slots.
      58f2d6ef
  11. 01 Jan, 2015 2 commits
  12. 28 Dec, 2014 2 commits
    • Paul Eggert's avatar
      Wrap dll functions more simply · e092accb
      Paul Eggert authored
      * decompress.c, gnutls.c, image.c, xml.c:
      If WINDOWSNT, use '#define FOO fn_FOO' to wrap dll functions,
      rather than the inverse when not WINDOWSNT.  This isolates the
      fn_* business into the WINDOWSNT-specific section of the code,
      which makes it easier to maintain the generic code.
      * decompress.c (DEF_ZLIB_FN, LOAD_ZLIB_FN):
      * gnutls.c (DEF_GNUTLS_FN, LOAD_GNUTLS_FN):
      * image.c (DEF_IMGLIB_FN, LOAD_IMGLIB_FN):
      * xml.c (DEF_XML2_FN, LOAD_XML2_FN):
      Remove.  All uses replaced by DEF_DLL_FN.
      * w32.h (DEF_DLL_FN, LOAD_DLL_FN): New macros.
      e092accb
    • Paul Eggert's avatar
      Port memory-full checking to GnuTLS 3.3 · b54f5721
      Paul Eggert authored
      Instead of using gnutls_global_set_mem_functions, check every call
      to a GnuTLS function that might return an indication of memory
      exhaustion.  Suggested by Dmitry Antipov in:
      http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg02056.html
      * src/gnutls.c (gnutls_global_set_mem_functions) [WINDOWSNT]: Remove.
      (init_gnutls_functions): Do not load gnutls_global_set_mem_functions.
      (fn_gnutls_global_set_mem_functions) [!WINDOWSNT]: Remove.
      All uses removed.
      (check_memory_full): New function.
      (emacs_gnutls_handshake, emacs_gnutls_handle_error)
      (gnutls_make_error, Fgnutls_boot): Use it.
      (emacs_gnutls_global_init): Avoid gnutls_global_set_mem_functions.
      b54f5721
  13. 18 Dec, 2014 1 commit
  14. 14 Dec, 2014 1 commit
    • Eli Zaretskii's avatar
      Load system's default trusted Certificate Authorities if available. · e99ce632
      Eli Zaretskii authored
       src/gnutls.c (gnutls_certificate_set_x509_system_trust)
       [GNUTLS >= 3.0.20]: Declare for WINDOWSNT.
       (init_gnutls_functions)(gnutls_certificate_set_x509_system_trust)
       [GNUTLS >= 3.0.20]: Load from shared library for WINDOWSNT.
       (fn_gnutls_certificate_set_x509_system_trust) [!WINDOWSNT]: Define
       new macro.
       (Fgnutls_boot) [GNUTLS >= 3.0.20]: Call
       gnutls_certificate_set_x509_system_trust.  Log an error message if
       it fails.
      e99ce632
  15. 13 Dec, 2014 3 commits
  16. 12 Dec, 2014 1 commit
    • Eli Zaretskii's avatar
      A better fix for bug#19346 · 16d4c1cd
      Eli Zaretskii authored
       src/gnutls.c (Fgnutls_available_p, syms_of_gnutls): Move
       gnutls-available-p out of the HAVE_GNUTLS conditional, and define
       them only once.
      16d4c1cd
  17. 11 Dec, 2014 1 commit
    • Ted Zlatanov's avatar
      Always define `gnutls-available-p' even if GnuTLS is not available. · 301a4014
      Ted Zlatanov authored
      Fixes: debbugs:19346
      
      * gnutls.c (Fgnutls_available_p syms_of_gnutls): Move later for
      clarity.  Let the availability check return Qnil when the GnuTLS
      integration is not available, instead of erroring out.
      
      * gnutls.h: Always declare syms_of_gnutls.
      
      * emacs.c (main): Always include gnutls.h and run syms_of_gnutls.
      301a4014
  18. 10 Dec, 2014 1 commit
    • Paul Eggert's avatar
      Fix glitches in gnutls.c, mostly memory-related · 99be7508
      Paul Eggert authored
      * gnutls.c: Sort macro definitions by name.
      (fn_gnutls_transport_set_errno): Omit unreachable definition.
      (fn_gnutls_x509_crt_get_signature): Omit unused symbol.
      (gnutls_hex_string): Arg is now unsigned char *, to avoid a cast.
      Prefer ptrdiff_t for sizes.  Check for arithmetic overflow when
      calculating string length.  Use make_uninit_string, to avoid
      copying the string.  Cast the char, not the pointer.
      (gnutls_certificate_details): Use xmalloc and xfree, not malloc
      and free.  Work even for dates past the year 9999.  Use void *
      for buffers, to avoid casts.
      99be7508
  19. 09 Dec, 2014 1 commit
  20. 08 Dec, 2014 8 commits
  21. 03 Dec, 2014 1 commit
    • Chris Zheng's avatar
      Fix gnutls.c build on MinGW · 38aaf904
      Chris Zheng authored
      Fixes: debbugs:19231
      
      * gnutls.c (init_gnutls_functions, gnutls_certificate_details):
      Use gnutls_sign_get_name directly because
      gnutls_sign_algorithm_get_name is a macro on MinGW.
      (init_gnutls_functions): Load missing gnutls_server_name_set.
      38aaf904
  22. 26 Nov, 2014 2 commits
  23. 25 Nov, 2014 6 commits