1. 16 Sep, 2012 3 commits
  2. 15 Sep, 2012 4 commits
    • Paul Eggert's avatar
      Port _setjmp fix to POSIXish hosts as well as Microsoft. · 39a57ad0
      Paul Eggert authored
      * nt/config.nt: Attempt to sync with autogen/config.in.
      (HAVE_SIGSETJMP, HAVE__SETJMP): New macros.
      (_longjmp, _setjmp): Remove.
      * src/image.c (_setjmp) [!HAVE__SETJMP]: Restore definition, as
      it's needed on POSIXish hosts that lack _setjmp.  Attempt to solve
      the Microsoft problem in a different way, by altering nt/config.nt.
      39a57ad0
    • Eli Zaretskii's avatar
      Fix MS-Windows build broken by 2012-09-15T07:06:56Z!eggert@cs.ucla.edu,... · 7105c8cb
      Eli Zaretskii authored
      Fix MS-Windows build broken by 2012-09-15T07:06:56Z!eggert@cs.ucla.edu, completing fix for bug #12446.
      
       src/w32xfns.c:
       src/w32uniscribe.c:
       src/w32term.c:
       src/w32select.c:
       src/w32reg.c:
       src/w32proc.c:
       src/w32menu.c:
       src/w32inevt.c:
       src/w32heap.c:
       src/w32font.c:
       src/w32fns.c:
       src/w32console.c:
       src/w32.c:
       src/w16select.c: Remove inclusion of setjmp.h, as it is now included
       by lisp.h.  This completes removal of setjmp.h inclusion
       erroneously announced in the previous commit.
       src/lisp.h [!HAVE__SETJMP, !HAVE_SIGSETJMP]: Make the commentary
       more accurate.
       src/image.c (_setjmp) [!HAVE__SETJMP]: Define only if 'setjmp' is
       not defined as a macro.  The latter happens on MS-Windows.
      7105c8cb
    • Paul Eggert's avatar
      Port better to POSIX hosts lacking _setjmp. · 0328b6de
      Paul Eggert authored
      * configure.ac (HAVE__SETJMP, HAVE_SIGSETJMP): New symbols.
      (_setjmp, _longjmp): Remove.
      * src/lisp.h: Include <setjmp.h> here, since we use its symbols here.
      All instances of '#include <setjmp.h>' removed, if the
      only reason for the instance was because "lisp.h" was included.
      (sys_jmp_buf, sys_setjmp, sys_longjmp): New symbols.
      Unless otherwise specified, replace all uses of jmp_buf, _setjmp,
      and _longjmp with the new symbols.  Emacs already uses _setjmp if
      available, so this change affects only POSIXish hosts that have
      sigsetjmp but not _setjmp, such as some versions of Solaris and
      Unixware.  (Also, POSIX-2008 marks _setjmp as obsolescent.)
      * src/image.c (_setjmp, _longjmp) [HAVE_PNG && !HAVE__SETJMP]: New macros.
      (png_load_body) [HAVE_PNG]:
      (PNG_LONGJMP) [HAVE_PNG && PNG_LIBPNG_VER < 10500]:
      (PNG_JMPBUF) [HAVE_PNG && PNG_LIBPNG_VER >= 10500]:
      Use _setjmp and _longjmp rather than sys_setjmp and sys_longjmp,
      since PNG requires jmp_buf.  This is the only exception to the
      general rule that we now use sys_setjmp and sys_longjmp.
      This exception is OK since this code does not change the signal
      mask or longjmp out of a signal handler.
      
      Fixes: debbugs:12446
      0328b6de
    • Kenichi Handa's avatar
      font.c (Ffont_shape_gstring): Don't adjust grapheme cluster here, but just... · ea964864
      Kenichi Handa authored
      font.c (Ffont_shape_gstring): Don't adjust grapheme cluster here, but just check the validity of glyphs in the glyph-string.
      ea964864
  3. 14 Sep, 2012 4 commits
  4. 13 Sep, 2012 6 commits
    • Paul Eggert's avatar
      Use a more backwards-compatible timer format. · c18e885b
      Paul Eggert authored
      * etc/NEWS: Document it.
      * lisp/emacs-lisp/timer.el (timer): PSECS is now at the end, rather than
      being right after USECS, as that better supports old code that
      inadvisedly looked directly at the timer vector.
      * src/keyboard.c (decode_timer): Get PSECS from the 8th (origin-0)
      vector element, not from the 4th, since PSECS is now at the end.
      (Fcurrent_idle_time): Doc fix.
      
      Fixes: debbugs:12430
      c18e885b
    • Juanma Barranquero's avatar
      Fix typos in ChangeLogs. · fc0c31f8
      Juanma Barranquero authored
      fc0c31f8
    • Dmitry Antipov's avatar
      Function to mark objects and remove killed buffers at once. · d59a1afb
      Dmitry Antipov authored
      * alloc.c (discard_killed_buffers): Rename to ...
      (mark_discard_killed buffers) ... new name.  Add marking
      of remaining objects.  Fix comment.  Adjust users.
      (mark_object): Do not touch frame buffer lists here.
      * frame.c (delete_frame): Reset frame buffer lists here.
      d59a1afb
    • Paul Eggert's avatar
      Better workaround for GNOME bug when --enable-gcc-warnings. · 8ea47e3a
      Paul Eggert authored
      * emacsgtkfixed.c (G_STATIC_ASSERT): Remove, undoing last change.
      Instead, disable -Wunused-local-typedefs.  See Dmitry Antipov in
      <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00335.html>.
      8ea47e3a
    • Paul Eggert's avatar
      Simplify SIGIO usage. · 4a4bbad2
      Paul Eggert authored
      The code that dealt with SIGIO was crufty and confusing, e.g., it
      played tricks like "#undef SIGIO" but these tricks were not used
      consistently.  Simplify mostly by not #undeffing standard symbols,
      e.g., use "defined USABLE_SIGIO" (our symbol, which we can define
      or not as we please) rather than "defined SIGIO" (standard symbol
      that we probably shouldn't #undef).
      * configure.ac (NO_TERMIO, BROKEN_FIONREAD, BROKEN_SIGAIO)
      (BROKEN_SIGPOLL, BROKEN_SIGPTY): Remove.
      (USABLE_FIONREAD, USABLE_SIGIO): New symbols.  All uses of
      'defined SIGIO' replaced with 'defined USABLE_SIGIO', with no need
      to #undef SIGIO now (which was error-prone).  Likewise, all uses
      of 'defined FIONREAD' replaced with 'defined USABLE_FIONREAD'.
      * src/admin/CPP_DEFINES (BROKEN_SIGAIO, BROKEN_SIGIO, BROKEN_SIGPOLL)
      (BROKEN_SIGPTY, NO_TERMIO): Remove.
      * src/conf_post.h [USG5_4]: Do not include <sys/wait.h> here.
      Modules that need it can include it.
      [USG5_4 && emacs]: Likewise, do not include the streams stuff here.
      * src/dispextern.h (ignore_sigio): New decl.
      * src/emacs.c (shut_down_emacs): Invoke unrequest_sigio
      unconditionally, since it's now a no-op if !USABLE_SIGIO.
      * src/emacs.c (shut_down_emacs):
      * src/keyboard.c (kbd_buffer_store_event_hold):
      Use ignore_sigio rather than invoking 'signal' directly.
      * src/keyboard.c (USABLE_FIONREAD && USG5_4): Include <sys/filio.h>,
      for FIONREAD.
      (FIONREAD, SIGIO): Do not #undef.
      (tty_read_avail_input): Use #error rather than a syntax error.
      * src/process.c [USG5_4]: Include <sys/stream.h> and <sys/stropts.h>,
      for I_PIPE, used by SETUP_SLAVE_PTY.
      (DATAGRAM_SOCKETS): Simplify defn, based on USABLE_FIONREAD.
      * src/sysdep.c (croak): Remove; no longer needed.  This bit of
      temporary code, with Fred N. Fish's comment that it's temporary,
      has been in Emacs since at least 1992!
      (init_sigio, reset_sigio, request_sigio, unrequest_sigio):
      Arrange for them to be no-ops in all cases when ! USABLE_SIGIO.
      * src/syssignal.h (croak): Remove decl.
      (SIGIO, SIGPOO, SIGAIO, SIGPTY): Do not #undef; that's too fragile.
      * src/systty.h [!NO_TERMIO]: Do not include <termio.h>; no longer needed
      now that we're termios-only.
      (FIONREAD, ASYNC) [BROKEN_FIONREAD]: Do not #undef.
      * src/term.c (dissociate_if_controlling_tty): Use #error rather than
      a run-time error.
      
      Fixes: debbugs:12408
      4a4bbad2
    • Paul Eggert's avatar
      Work around GCC and GNOME bugs when --enable-gcc-warnings. · 5f0cb45a
      Paul Eggert authored
      * emacsgtkfixed.c (G_STATIC_ASSERT): Redefine to use 'verify',
      to work around GNOME bug 683906.
      * image.c (jpeg_load_body) [HAVE_JPEG && lint]: Pacify gcc -Wclobber.
      (struct my_jpeg_error_mgr) [HAVE_JPEG && lint]: New member fp.
      This works around GCC bug 54561.
      5f0cb45a
  5. 12 Sep, 2012 5 commits
    • Paul Eggert's avatar
      More fixes for 'volatile' and setjmp/longjmp. · 40bce90b
      Paul Eggert authored
      * eval.c (Fdefvar, Fcondition_case): Remove unnecessary 'volatile's.
      * image.c (struct png_load_context) [HAVE_PNG]: New type.
      (png_load_body) [HAVE_PNG]:
      (jpeg_load_body) [HAVE_JPEG]:
      New function, with most of the old parent function's body.
      (png_load) [HAVE_PNG]:
      (jpeg_load) [HAVE_JPEG]:
      Invoke the new function, to avoid longjmp munging our locals.
      (struct my_jpeg_error_mgr) [HAVE_JPEG]: New members cinfo, failure_code.
      (my_error_exit) [HAVE_JPEG]: Don't trust 'setjmp' to return 2 when
      longjmp is passed 2, as the C standard doesn't guarantee this.
      Instead, store the failure code into mgr->failure_code.
      40bce90b
    • Stefan Monnier's avatar
      Remove unread-command-char. · bfeae2cf
      Stefan Monnier authored
      * src/keyboard.c (read_char, requeued_events_pending_p, Finput_pending_p)
      (Fdiscard_input, quit_throw_to_read_char, init_keyboard)
      (syms_of_keyboard): Remove support for unread-command-char.
      * lisp/emacs-lisp/debug.el (debugger-outer-unread-command-char, debug)
      (debugger-env-macro): Remove support for unread-command-char.
      
      * lisp/ehelp.el (with-electric-help): Accept functions in
      electric-help-form-to-execute.
      (electric-help-execute-extended, electric-help-ctrl-x-prefix): Use it.
      And replace unread-command-char -> unread-command-events.
      
      * lisp/subr.el (set-temporary-overlay-map): Minimize slightly the impact of
      the temporary map re-appearing on emulation-mode-map-alists.
      
      * lisp/emacs-lisp/edebug.el (def-edebug-form-spec): Remove, it's been broken
      since 22.1.
      bfeae2cf
    • Eli Zaretskii's avatar
      Fix silent exit upon assertion violation on MS-Windows. · 8099e36b
      Eli Zaretskii authored
       src/w32proc.c (sys_kill): If PID is our process ID and the signal is
       SIGABRT, call emacs_abort.  Avoids silently exiting upon assertion
       violation.  (Bug#12426)
      8099e36b
    • Paul Eggert's avatar
    • Stefan Monnier's avatar
      * src/eval.c: Add `inhibit-debugger'. · 45b82ad0
      Stefan Monnier authored
      (Qinhibit_debugger): New symbol.
      (call_debugger): Bind it instead of Qdebug_on_error.
      (maybe_call_debugger): Test Vinhibit_debugger.
      (syms_of_eval): Define inhibit-debugger.
      * src/xdisp.c (set_message): Don't bind Qinhibit_debug_on_message.
      (syms_of_xdisp): Remove inhibit-debug-on-message.
      * lisp/emacs-lisp/debug.el (debug): Don't bind debug-on-error since
      inhibit-debugger is bound instead.
      45b82ad0
  6. 11 Sep, 2012 9 commits
    • Paul Eggert's avatar
      Avoid _setjmp/_longjmp problems with local nonvolatile variables. · 50f2e553
      Paul Eggert authored
      If a nonvolatile local variable is written before a _longjmp to
      the frame containing the variable, and is read after the _longjmp,
      the value read is indeterminate.  Some local variables of type
      'struct handler' and 'struct catchtag' are used in this way, so
      mark each of their slots as volatile if the slot can be set before
      _longjmp and read afterwards.
      * lisp.h (struct handler): var and chosen_clause are now volatile.
      (struct catchtag): val, next, and pdlcount are now volatile.
      50f2e553
    • Paul Eggert's avatar
      Prefer assignment to memcpy when either will do. · ae1d87e2
      Paul Eggert authored
      * lib-src/pop.c (socket_connection) [HAVE_GETADDRINFO]:
      * src/bidi.c (bidi_push_it, bidi_pop_it):
      * src/fns.c (copy_hash_table):
      * src/image.c (define_image_type):
      * src/keyboard.c (kbd_buffer_store_event_hold):
      * src/process.c (Fprocess_send_eof):
      * src/xfaces.c (x_create_gc) [HAVE_NS]:
      * src/xgselect.c (xg_select):
      Use assignment, not memcpy, as either will do here, and assignment is
      more likely to catch type errors.
      ae1d87e2
    • Paul Eggert's avatar
      * alloc.c (discard_killed_buffers): Tune and simplify a bit. · 5779a1dc
      Paul Eggert authored
      Use pointer-to-a-pointer to simplify and avoid a NILP check each
      time an item is removed.  No need to mark this function 'inline';
      the compiler knows better than we do.
      5779a1dc
    • Jan Djärv's avatar
      * nsterm.h: Add delay parameter to updateFrameSize. · c4c9756b
      Jan Djärv authored
      * nsterm.m (ns_judge_scroll_bars): Pass NO to updateFrameSize.
      (updateFrameSize:): Add delay parameter to updateFrameSize, send it
      to change_frame_size.
      (windowDidResize:): Pass YES to updateFrameSize.
      
      Fixes: debbugs:12388
      c4c9756b
    • Dmitry Antipov's avatar
      Discard killed buffers from deleted window and frame objects. · d73e321c
      Dmitry Antipov authored
      This reduces an amount of references to killed buffers and
      helps GC to reclaim them faster.
      * alloc.c (discard_killed_buffers): New function.
      (mark_object): Use it for deleted windows and frames.
      (mark_object): If symbol's value is set up for a killed buffer
      or deleted frame, restore it's global binding.
      * data.c (swap_in_global_binding): Add GC notice.
      (swap_in_symval_forwarding): Use convenient set_blv_where.
      * window.c (wset_next_buffers, wset_prev_buffers): Move ...
      * window.h: ... to here.
      d73e321c
    • Dmitry Antipov's avatar
      Convenient macro to check whether the buffer is live. · e578f381
      Dmitry Antipov authored
      * buffer.h (BUFFER_LIVE_P): New macro.
      * alloc.c, buffer.c, editfns.c, insdel.c, lread.c, marker.c:
      * minibuf.c, print.c, process.c, window.c, xdisp.c: Use it.
      e578f381
    • YAMAMOTO Mitsuharu's avatar
      Fix wrong overhang display for gstring compositions (Bug#12364). · 3057e615
      YAMAMOTO Mitsuharu authored
      * xdisp.c (right_overwritten, right_overwriting): Also handle gstring
      composition cases (Bug#12364).
      
      * xterm.c (x_draw_glyph_string): Avoid overwriting inverted left
      overhang of succeeding glyphs overlapping box cursor.
      
      * w32term.c (x_draw_glyph_string): Likewise.
      3057e615
    • Paul Eggert's avatar
      Simplify, document, and port floating-point. · c990426a
      Paul Eggert authored
      The porting part of this patch fixes bugs on non-IEEE platforms
      with frexp, ldexp, logb.
      * admin/CPP-DEFINES (HAVE_CBRT, HAVE_LOGB, logb): Remove.
      * configure.ac (logb, cbrt): Do not check for these functions,
      as they are not being used.
      * doc/lispref/numbers.texi (Float Basics, Arithmetic Operations, Math Functions):
      Document that / and mod (with floating point arguments), along
      with asin, acos, log, log10, expt and sqrt, return special values
      instead of signaling exceptions.
      (Float Basics): Document that logb operates on the absolute value
      of its argument.
      (Math Functions): Document that (log ARG BASE) also returns NaN if
      BASE is negative.  Document that (expt X Y) returns NaN if X is a
      finite negative number and Y a finite non-integer.
      * etc/NEWS: Document NaNs versus signaling-error change.
      * src/data.c, src/lisp.h (Qdomain_error, Qsingularity_error, Qunderflow_error):
      Now static.
      * src/floatfns.c: Simplify discussion of functions that Emacs doesn't
      support, by removing commented-out code and briefly listing the
      C89 functions excluded.  The commented-out stuff was confusing
      maintenance, e.g., we thought we needed cbrt but it was commented out.
      (logb): Remove decl; no longer needed.
      (isfinite): New macro, if not already supplied.
      (isnan): Don't replace any existing macro.
      (Ffrexp, Fldexp): Define even if !HAVE_COPYSIGN, as frexp and ldexp
      are present on all C89 platforms.
      (Ffrexp): Do not special-case zero, as frexp does the right thing
      for that case.
      (Flogb): Do not use logb, as it doesn't have the desired meaning
      on hosts that use non-base-2 floating point.  Instead, stick with
      frexp, which is C89 anyway.  Do not pass an infinity or a NaN to
      frexp, to avoid getting an unspecified result.
      c990426a
    • Paul Eggert's avatar
      6fda35f2
  7. 10 Sep, 2012 3 commits
  8. 09 Sep, 2012 4 commits
    • Stefan Monnier's avatar
      * src/lisp.h (make_lisp_ptr): New macro to replace XSET. · e7032e7c
      Stefan Monnier authored
      (XSETCONS, XSETVECTOR, XSETSTRING, XSETSYMBOL, XSETFLOAT, XSETMISC):
      Use it.
      e7032e7c
    • Eli Zaretskii's avatar
      Avoid leaving traces of cursor when entering linum-mode. · aba05ce9
      Eli Zaretskii authored
       src/fringe.c (draw_fringe_bitmap_1): Don't reduce the width of the
       left fringe if the window has a left margin.  This avoids leaving
       traces of the cursor because its leftmost pixel is not drawn over.
      aba05ce9
    • Eli Zaretskii's avatar
      Fix bug #12277 with incomplete redisplay of the vertical border between windows. · e9957956
      Eli Zaretskii authored
       src/dispnew.c (update_window_line): When the left margin area of a
       screen line is updated, set the redraw_fringe_bitmaps_p flag of
       that screen line.
      e9957956
    • Paul Eggert's avatar
      Assume C89 or later for math functions. · f6196b87
      Paul Eggert authored
      This simplifies the code, and makes it a bit smaller and faster,
      and (most important) makes it easier to clean up signal handling
      since we can stop worring about floating-point exceptions in
      library code.  That was a problem before C89, but the problem
      went away many years ago on all practical Emacs targets.
      * configure.ac (frexp, fmod): Remove checks for these functions,
      as we now assume them.
      (FLOAT_CHECK_DOMAIN, HAVE_INVERSE_HYPERBOLIC, NO_MATHERR)
      (HAVE_EXCEPTION):
      Remove; no longer needed.
      * admin/CPP-DEFINES (HAVE_FMOD, HAVE_FREXP, FLOAT_CHECK_DOMAIN)
      (HAVE_INVERSE_HYPERBOLIC, NO_MATHERR): Remove.
      * src/data.c, src/image.c, src/lread.c, src/print.c:
      Don't include <math.h>; no longer needed.
      * src/data.c, src/floatfns.c (IEEE_FLOATING_POINT): Don't worry that it
      might be autoconfigured, as that never happens.
      * src/data.c (fmod):
      * src/doprnt.c (DBL_MAX_10_EXP):
      * src/print.c (DBL_DIG):
      Remove.  C89 or later always defines these.
      * src/floatfns.c (HAVE_MATHERR, FLOAT_CHECK_ERRNO, FLOAT_CHECK_DOMAIN)
      (in_float, float_error_arg, float_error_arg2, float_error_fn_name)
      (arith_error, domain_error, domain_error2):
      Remove all this pre-C89 cruft.  Do not include <errno.h> as that's
      no longer needed -- we simply return what C returns.  All uses removed.
      (IN_FLOAT, IN_FLOAT2): Remove.  All uses replaced with
      the wrapped code.
      (FLOAT_TO_INT, FLOAT_TO_INT2, range_error, range_error2):
      Remove.  All uses expanded, as these macros are no longer used
      more than once and are now more trouble than they're worth.
      (Ftan): Use tan, not sin / cos.
      (Flogb): Assume C89 frexp.
      (fmod_float): Assume C89 fmod.
      (matherr) [HAVE_MATHERR]: Remove; no longer needed.
      (init_floatfns): Remove.  All uses removed.
      f6196b87
  9. 08 Sep, 2012 2 commits