diff options
| author | Miles Bader | 2006-05-17 07:46:49 +0000 |
|---|---|---|
| committer | Miles Bader | 2006-05-17 07:46:49 +0000 |
| commit | 4ed925c6687e25373e8d75e68b9072f1170d571a (patch) | |
| tree | 257bac5e35e00b7f5a23768e04121bb29534dfe2 /src | |
| parent | 89acbd040797742d97dbbe562a495574da88326c (diff) | |
| parent | 8d1bec8de1c570475c1332d1305bea21ffda44f1 (diff) | |
| download | emacs-4ed925c6687e25373e8d75e68b9072f1170d571a.tar.gz emacs-4ed925c6687e25373e8d75e68b9072f1170d571a.zip | |
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 274-284)
- Update from CVS
- Update etc/MORE.STUFF.
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 101)
- Update from CVS
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-62
Diffstat (limited to 'src')
| -rw-r--r-- | src/.arch-inventory | 2 | ||||
| -rw-r--r-- | src/ChangeLog | 51 | ||||
| -rw-r--r-- | src/Makefile.in | 4 | ||||
| -rw-r--r-- | src/editfns.c | 4 | ||||
| -rw-r--r-- | src/fileio.c | 9 | ||||
| -rw-r--r-- | src/frame.c | 2 | ||||
| -rw-r--r-- | src/intervals.c | 40 | ||||
| -rw-r--r-- | src/lread.c | 8 | ||||
| -rw-r--r-- | src/textprop.c | 68 | ||||
| -rw-r--r-- | src/xdisp.c | 2 | ||||
| -rw-r--r-- | src/xterm.c | 12 |
11 files changed, 142 insertions, 60 deletions
diff --git a/src/.arch-inventory b/src/.arch-inventory index a98d4c9932f..fe99529135f 100644 --- a/src/.arch-inventory +++ b/src/.arch-inventory | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | source ^\.(gdbinit|dbxinit)$ | 2 | source ^\.(gdbinit|dbxinit)$ |
| 3 | 3 | ||
| 4 | # Auto-generated files, which ignore | 4 | # Auto-generated files, which ignore |
| 5 | precious ^(config\.stamp|config\.h|epaths\.h)$ | 5 | precious ^(config\.stamp|config\.h|epaths\.h|buildobj\.lst)$ |
| 6 | 6 | ||
| 7 | backup ^(stamp-oldxmenu|prefix-args|temacs|emacs|emacs-[0-9.]*)$ | 7 | backup ^(stamp-oldxmenu|prefix-args|temacs|emacs|emacs-[0-9.]*)$ |
| 8 | 8 | ||
diff --git a/src/ChangeLog b/src/ChangeLog index d7e8293ad27..61fca56c357 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,54 @@ | |||
| 1 | 2006-05-16 Kim F. Storm <storm@cua.dk> | ||
| 2 | |||
| 3 | * xterm.c (handle_one_xevent): Check that f is not NULL before | ||
| 4 | calling x_kill_gs_process. | ||
| 5 | |||
| 6 | 2006-05-14 Richard Stallman <rms@gnu.org> | ||
| 7 | |||
| 8 | * textprop.c (Fnext_single_char_property_change) | ||
| 9 | (Fprevious_single_char_property_change): Don't allow returning | ||
| 10 | value beyond LIMIT in any cases. | ||
| 11 | (Fnext_char_property_change, Fprevious_char_property_change): Doc fix. | ||
| 12 | |||
| 13 | * intervals.c (get_local_map): Abort if POSITION outside BEGV, ZV. | ||
| 14 | |||
| 15 | 2006-05-14 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | ||
| 16 | |||
| 17 | * xterm.c (handle_one_xevent): Check that f is not NULL before | ||
| 18 | calling _XEditResCheckMessages. | ||
| 19 | |||
| 20 | 2006-05-14 Kim F. Storm <storm@cua.dk> | ||
| 21 | |||
| 22 | * xterm.c (handle_one_xevent): Fix crash in 2006-03-24 change. | ||
| 23 | |||
| 24 | 2006-05-13 Eli Zaretskii <eliz@gnu.org> | ||
| 25 | |||
| 26 | * frame.c (x_set_border_width): Fix error message to say "frame", | ||
| 27 | not "window". | ||
| 28 | |||
| 29 | * Makefile.in (SOME_MACHINE_LISP): Add fringe.elc. | ||
| 30 | |||
| 31 | 2006-05-12 Chong Yidong <cyd@stupidchicken.com> | ||
| 32 | |||
| 33 | * intervals.c (set_point_both): Fix mixup before before and after | ||
| 34 | in variable names. | ||
| 35 | |||
| 36 | * editfns.c (Fline_beginning_position): Inhibit point-motion hooks | ||
| 37 | while setting point temporarily. | ||
| 38 | |||
| 39 | 2006-05-11 Richard Stallman <rms@gnu.org> | ||
| 40 | |||
| 41 | * lread.c (readevalloop): Abort if START non-nil for non-buffer input. | ||
| 42 | |||
| 43 | 2006-05-11 Kim F. Storm <storm@cua.dk> | ||
| 44 | |||
| 45 | * xdisp.c (redisplay_tool_bar): Handle large tool-bar-border values. | ||
| 46 | |||
| 47 | 2006-05-11 Kenichi Handa <handa@m17n.org> | ||
| 48 | |||
| 49 | * fileio.c (Finsert_file_contents): Fix for the case of IO error | ||
| 50 | while handling replace operation. | ||
| 51 | |||
| 1 | 2006-05-10 Kenichi Handa <handa@m17n.org> | 52 | 2006-05-10 Kenichi Handa <handa@m17n.org> |
| 2 | 53 | ||
| 3 | * xfaces.c (realize_default_face) [HAVE_X_WINDOWS]: If the font | 54 | * xfaces.c (realize_default_face) [HAVE_X_WINDOWS]: If the font |
diff --git a/src/Makefile.in b/src/Makefile.in index 16a85dfe191..48debcab31d 100644 --- a/src/Makefile.in +++ b/src/Makefile.in | |||
| @@ -900,8 +900,8 @@ SOME_MACHINE_LISP = ${dotdot}/lisp/mouse.elc \ | |||
| 900 | ${dotdot}/lisp/w32-fns.elc ${dotdot}/lisp/dos-w32.elc \ | 900 | ${dotdot}/lisp/w32-fns.elc ${dotdot}/lisp/dos-w32.elc \ |
| 901 | ${dotdot}/lisp/disp-table.elc ${dotdot}/lisp/dos-vars.elc \ | 901 | ${dotdot}/lisp/disp-table.elc ${dotdot}/lisp/dos-vars.elc \ |
| 902 | ${dotdot}/lisp/tooltip.elc ${dotdot}/lisp/image.elc \ | 902 | ${dotdot}/lisp/tooltip.elc ${dotdot}/lisp/image.elc \ |
| 903 | ${dotdot}/lisp/dnd.elc ${dotdot}/lisp/mwheel.elc \ | 903 | ${dotdot}/lisp/fringe.elc ${dotdot}/lisp/dnd.elc \ |
| 904 | ${dotdot}/lisp/tool-bar.elc \ | 904 | ${dotdot}/lisp/mwheel.elc ${dotdot}/lisp/tool-bar.elc \ |
| 905 | ${dotdot}/lisp/x-dnd.elc \ | 905 | ${dotdot}/lisp/x-dnd.elc \ |
| 906 | ${dotdot}/lisp/international/ccl.elc \ | 906 | ${dotdot}/lisp/international/ccl.elc \ |
| 907 | ${dotdot}/lisp/international/codepage.elc \ | 907 | ${dotdot}/lisp/international/codepage.elc \ |
diff --git a/src/editfns.c b/src/editfns.c index 4f8b349b749..4578af6973c 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -821,6 +821,8 @@ This function does not move point. */) | |||
| 821 | Lisp_Object n; | 821 | Lisp_Object n; |
| 822 | { | 822 | { |
| 823 | int orig, orig_byte, end; | 823 | int orig, orig_byte, end; |
| 824 | int count = SPECPDL_INDEX (); | ||
| 825 | specbind (Qinhibit_point_motion_hooks, Qt); | ||
| 824 | 826 | ||
| 825 | if (NILP (n)) | 827 | if (NILP (n)) |
| 826 | XSETFASTINT (n, 1); | 828 | XSETFASTINT (n, 1); |
| @@ -834,6 +836,8 @@ This function does not move point. */) | |||
| 834 | 836 | ||
| 835 | SET_PT_BOTH (orig, orig_byte); | 837 | SET_PT_BOTH (orig, orig_byte); |
| 836 | 838 | ||
| 839 | unbind_to (count, Qnil); | ||
| 840 | |||
| 837 | /* Return END constrained to the current input field. */ | 841 | /* Return END constrained to the current input field. */ |
| 838 | return Fconstrain_to_field (make_number (end), make_number (orig), | 842 | return Fconstrain_to_field (make_number (end), make_number (orig), |
| 839 | XINT (n) != 1 ? Qt : Qnil, | 843 | XINT (n) != 1 ? Qt : Qnil, |
diff --git a/src/fileio.c b/src/fileio.c index 066668d107f..84b32f8dda9 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -4293,13 +4293,8 @@ actually used. */) | |||
| 4293 | if we couldn't read the file. */ | 4293 | if we couldn't read the file. */ |
| 4294 | 4294 | ||
| 4295 | if (how_much < 0) | 4295 | if (how_much < 0) |
| 4296 | { | 4296 | error ("IO error reading %s: %s", |
| 4297 | if (how_much == -1) | 4297 | SDATA (orig_filename), emacs_strerror (errno)); |
| 4298 | error ("IO error reading %s: %s", | ||
| 4299 | SDATA (orig_filename), emacs_strerror (errno)); | ||
| 4300 | else if (how_much == -2) | ||
| 4301 | error ("maximum buffer size exceeded"); | ||
| 4302 | } | ||
| 4303 | 4298 | ||
| 4304 | if (unprocessed > 0) | 4299 | if (unprocessed > 0) |
| 4305 | { | 4300 | { |
diff --git a/src/frame.c b/src/frame.c index 3efd04bf110..371441c7cca 100644 --- a/src/frame.c +++ b/src/frame.c | |||
| @@ -3142,7 +3142,7 @@ x_set_border_width (f, arg, oldval) | |||
| 3142 | 3142 | ||
| 3143 | #ifndef MAC_OS | 3143 | #ifndef MAC_OS |
| 3144 | if (FRAME_X_WINDOW (f) != 0) | 3144 | if (FRAME_X_WINDOW (f) != 0) |
| 3145 | error ("Cannot change the border width of a window"); | 3145 | error ("Cannot change the border width of a frame"); |
| 3146 | #endif /* MAC_TODO */ | 3146 | #endif /* MAC_TODO */ |
| 3147 | 3147 | ||
| 3148 | f->border_width = XINT (arg); | 3148 | f->border_width = XINT (arg); |
diff --git a/src/intervals.c b/src/intervals.c index 77971ace2a7..21e60c96d3f 100644 --- a/src/intervals.c +++ b/src/intervals.c | |||
| @@ -2196,36 +2196,38 @@ set_point_both (buffer, charpos, bytepos) | |||
| 2196 | Lisp_Object leave_after, leave_before, enter_after, enter_before; | 2196 | Lisp_Object leave_after, leave_before, enter_after, enter_before; |
| 2197 | 2197 | ||
| 2198 | if (fromprev) | 2198 | if (fromprev) |
| 2199 | leave_after = textget (fromprev->plist, Qpoint_left); | 2199 | leave_before = textget (fromprev->plist, Qpoint_left); |
| 2200 | else | 2200 | else |
| 2201 | leave_after = Qnil; | 2201 | leave_before = Qnil; |
| 2202 | |||
| 2202 | if (from) | 2203 | if (from) |
| 2203 | leave_before = textget (from->plist, Qpoint_left); | 2204 | leave_after = textget (from->plist, Qpoint_left); |
| 2204 | else | 2205 | else |
| 2205 | leave_before = Qnil; | 2206 | leave_after = Qnil; |
| 2206 | 2207 | ||
| 2207 | if (toprev) | 2208 | if (toprev) |
| 2208 | enter_after = textget (toprev->plist, Qpoint_entered); | 2209 | enter_before = textget (toprev->plist, Qpoint_entered); |
| 2209 | else | 2210 | else |
| 2210 | enter_after = Qnil; | 2211 | enter_before = Qnil; |
| 2212 | |||
| 2211 | if (to) | 2213 | if (to) |
| 2212 | enter_before = textget (to->plist, Qpoint_entered); | 2214 | enter_after = textget (to->plist, Qpoint_entered); |
| 2213 | else | 2215 | else |
| 2214 | enter_before = Qnil; | 2216 | enter_after = Qnil; |
| 2215 | 2217 | ||
| 2216 | if (! EQ (leave_before, enter_before) && !NILP (leave_before)) | 2218 | if (! EQ (leave_before, enter_before) && !NILP (leave_before)) |
| 2217 | call2 (leave_before, make_number (old_position), | 2219 | call2 (leave_before, make_number (old_position), |
| 2218 | make_number (charpos)); | 2220 | make_number (charpos)); |
| 2219 | if (! EQ (leave_after, enter_after) && !NILP (leave_after)) | 2221 | if (! EQ (leave_after, enter_after) && !NILP (leave_after)) |
| 2220 | call2 (leave_after, make_number (old_position), | 2222 | call2 (leave_after, make_number (old_position), |
| 2221 | make_number (charpos)); | 2223 | make_number (charpos)); |
| 2222 | 2224 | ||
| 2223 | if (! EQ (enter_before, leave_before) && !NILP (enter_before)) | 2225 | if (! EQ (enter_before, leave_before) && !NILP (enter_before)) |
| 2224 | call2 (enter_before, make_number (old_position), | 2226 | call2 (enter_before, make_number (old_position), |
| 2225 | make_number (charpos)); | 2227 | make_number (charpos)); |
| 2226 | if (! EQ (enter_after, leave_after) && !NILP (enter_after)) | 2228 | if (! EQ (enter_after, leave_after) && !NILP (enter_after)) |
| 2227 | call2 (enter_after, make_number (old_position), | 2229 | call2 (enter_after, make_number (old_position), |
| 2228 | make_number (charpos)); | 2230 | make_number (charpos)); |
| 2229 | } | 2231 | } |
| 2230 | } | 2232 | } |
| 2231 | 2233 | ||
| @@ -2339,7 +2341,9 @@ get_property_and_range (pos, prop, val, start, end, object) | |||
| 2339 | /* Return the proper local keymap TYPE for position POSITION in | 2341 | /* Return the proper local keymap TYPE for position POSITION in |
| 2340 | BUFFER; TYPE should be one of `keymap' or `local-map'. Use the map | 2342 | BUFFER; TYPE should be one of `keymap' or `local-map'. Use the map |
| 2341 | specified by the PROP property, if any. Otherwise, if TYPE is | 2343 | specified by the PROP property, if any. Otherwise, if TYPE is |
| 2342 | `local-map' use BUFFER's local map. */ | 2344 | `local-map' use BUFFER's local map. |
| 2345 | |||
| 2346 | POSITION must be in the accessible part of BUFFER. */ | ||
| 2343 | 2347 | ||
| 2344 | Lisp_Object | 2348 | Lisp_Object |
| 2345 | get_local_map (position, buffer, type) | 2349 | get_local_map (position, buffer, type) |
| @@ -2351,7 +2355,7 @@ get_local_map (position, buffer, type) | |||
| 2351 | int old_begv, old_zv, old_begv_byte, old_zv_byte; | 2355 | int old_begv, old_zv, old_begv_byte, old_zv_byte; |
| 2352 | 2356 | ||
| 2353 | /* Perhaps we should just change `position' to the limit. */ | 2357 | /* Perhaps we should just change `position' to the limit. */ |
| 2354 | if (position > BUF_Z (buffer) || position < BUF_BEG (buffer)) | 2358 | if (position > BUF_ZV (buffer) || position < BUF_BEGV (buffer)) |
| 2355 | abort (); | 2359 | abort (); |
| 2356 | 2360 | ||
| 2357 | /* Ignore narrowing, so that a local map continues to be valid even if | 2361 | /* Ignore narrowing, so that a local map continues to be valid even if |
diff --git a/src/lread.c b/src/lread.c index e2f9d81d059..b6161ebedaa 100644 --- a/src/lread.c +++ b/src/lread.c | |||
| @@ -1534,7 +1534,9 @@ end_of_file_error () | |||
| 1534 | /* UNIBYTE specifies how to set load_convert_to_unibyte | 1534 | /* UNIBYTE specifies how to set load_convert_to_unibyte |
| 1535 | for this invocation. | 1535 | for this invocation. |
| 1536 | READFUN, if non-nil, is used instead of `read'. | 1536 | READFUN, if non-nil, is used instead of `read'. |
| 1537 | START, END is region in current buffer (from eval-region). */ | 1537 | |
| 1538 | START, END specify region to read in current buffer (from eval-region). | ||
| 1539 | If the input is not from a buffer, they must be nil. */ | ||
| 1538 | 1540 | ||
| 1539 | static void | 1541 | static void |
| 1540 | readevalloop (readcharfun, stream, sourcename, evalfun, | 1542 | readevalloop (readcharfun, stream, sourcename, evalfun, |
| @@ -1570,6 +1572,10 @@ readevalloop (readcharfun, stream, sourcename, evalfun, | |||
| 1570 | else if (MARKERP (readcharfun)) | 1572 | else if (MARKERP (readcharfun)) |
| 1571 | b = XMARKER (readcharfun)->buffer; | 1573 | b = XMARKER (readcharfun)->buffer; |
| 1572 | 1574 | ||
| 1575 | /* We assume START is nil when input is not from a buffer. */ | ||
| 1576 | if (! NILP (start) && !b) | ||
| 1577 | abort (); | ||
| 1578 | |||
| 1573 | specbind (Qstandard_input, readcharfun); /* GCPROs readcharfun. */ | 1579 | specbind (Qstandard_input, readcharfun); /* GCPROs readcharfun. */ |
| 1574 | specbind (Qcurrent_load_list, Qnil); | 1580 | specbind (Qcurrent_load_list, Qnil); |
| 1575 | record_unwind_protect (readevalloop_1, load_convert_to_unibyte ? Qt : Qnil); | 1581 | record_unwind_protect (readevalloop_1, load_convert_to_unibyte ? Qt : Qnil); |
diff --git a/src/textprop.c b/src/textprop.c index e2f9c531735..87fa6742919 100644 --- a/src/textprop.c +++ b/src/textprop.c | |||
| @@ -717,10 +717,11 @@ DEFUN ("next-char-property-change", Fnext_char_property_change, | |||
| 717 | This scans characters forward in the current buffer from POSITION till | 717 | This scans characters forward in the current buffer from POSITION till |
| 718 | it finds a change in some text property, or the beginning or end of an | 718 | it finds a change in some text property, or the beginning or end of an |
| 719 | overlay, and returns the position of that. | 719 | overlay, and returns the position of that. |
| 720 | If none is found, the function returns (point-max). | 720 | If none is found up to (point-max), the function returns (point-max). |
| 721 | 721 | ||
| 722 | If the optional second argument LIMIT is non-nil, don't search | 722 | If the optional second argument LIMIT is non-nil, don't search |
| 723 | past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | 723 | past position LIMIT; return LIMIT if nothing is found before LIMIT. |
| 724 | LIMIT is a no-op if it is greater than (point-max). */) | ||
| 724 | (position, limit) | 725 | (position, limit) |
| 725 | Lisp_Object position, limit; | 726 | Lisp_Object position, limit; |
| 726 | { | 727 | { |
| @@ -742,10 +743,11 @@ DEFUN ("previous-char-property-change", Fprevious_char_property_change, | |||
| 742 | Scans characters backward in the current buffer from POSITION till it | 743 | Scans characters backward in the current buffer from POSITION till it |
| 743 | finds a change in some text property, or the beginning or end of an | 744 | finds a change in some text property, or the beginning or end of an |
| 744 | overlay, and returns the position of that. | 745 | overlay, and returns the position of that. |
| 745 | If none is found, the function returns (point-max). | 746 | If none is found since (point-min), the function returns (point-min). |
| 746 | 747 | ||
| 747 | If the optional second argument LIMIT is non-nil, don't search | 748 | If the optional second argument LIMIT is non-nil, don't search |
| 748 | past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | 749 | past position LIMIT; return LIMIT if nothing is found before LIMIT. |
| 750 | LIMIT is a no-op if it is less than (point-min). */) | ||
| 749 | (position, limit) | 751 | (position, limit) |
| 750 | Lisp_Object position, limit; | 752 | Lisp_Object position, limit; |
| 751 | { | 753 | { |
| @@ -771,6 +773,9 @@ If the optional third argument OBJECT is a buffer (or nil, which means | |||
| 771 | the current buffer), POSITION is a buffer position (integer or marker). | 773 | the current buffer), POSITION is a buffer position (integer or marker). |
| 772 | If OBJECT is a string, POSITION is a 0-based index into it. | 774 | If OBJECT is a string, POSITION is a 0-based index into it. |
| 773 | 775 | ||
| 776 | In a string, scan runs to the end of the string. | ||
| 777 | In a buffer, it runs to (point-max), and the value cannot exceed that. | ||
| 778 | |||
| 774 | The property values are compared with `eq'. | 779 | The property values are compared with `eq'. |
| 775 | If the property is constant all the way to the end of OBJECT, return the | 780 | If the property is constant all the way to the end of OBJECT, return the |
| 776 | last valid position in OBJECT. | 781 | last valid position in OBJECT. |
| @@ -812,22 +817,30 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | |||
| 812 | initial_value = Fget_char_property (position, prop, object); | 817 | initial_value = Fget_char_property (position, prop, object); |
| 813 | 818 | ||
| 814 | if (NILP (limit)) | 819 | if (NILP (limit)) |
| 815 | XSETFASTINT (limit, BUF_ZV (current_buffer)); | 820 | XSETFASTINT (limit, ZV); |
| 816 | else | 821 | else |
| 817 | CHECK_NUMBER_COERCE_MARKER (limit); | 822 | CHECK_NUMBER_COERCE_MARKER (limit); |
| 818 | 823 | ||
| 819 | for (;;) | 824 | if (XFASTINT (position) >= XFASTINT (limit)) |
| 820 | { | 825 | { |
| 821 | position = Fnext_char_property_change (position, limit); | 826 | position = limit; |
| 822 | if (XFASTINT (position) >= XFASTINT (limit)) { | 827 | if (XFASTINT (position) > ZV) |
| 823 | position = limit; | 828 | XSETFASTINT (position, ZV); |
| 824 | break; | ||
| 825 | } | ||
| 826 | |||
| 827 | value = Fget_char_property (position, prop, object); | ||
| 828 | if (!EQ (value, initial_value)) | ||
| 829 | break; | ||
| 830 | } | 829 | } |
| 830 | else | ||
| 831 | while (1) | ||
| 832 | { | ||
| 833 | position = Fnext_char_property_change (position, limit); | ||
| 834 | if (XFASTINT (position) >= XFASTINT (limit)) | ||
| 835 | { | ||
| 836 | position = limit; | ||
| 837 | break; | ||
| 838 | } | ||
| 839 | |||
| 840 | value = Fget_char_property (position, prop, object); | ||
| 841 | if (!EQ (value, initial_value)) | ||
| 842 | break; | ||
| 843 | } | ||
| 831 | 844 | ||
| 832 | unbind_to (count, Qnil); | 845 | unbind_to (count, Qnil); |
| 833 | } | 846 | } |
| @@ -845,6 +858,9 @@ If the optional third argument OBJECT is a buffer (or nil, which means | |||
| 845 | the current buffer), POSITION is a buffer position (integer or marker). | 858 | the current buffer), POSITION is a buffer position (integer or marker). |
| 846 | If OBJECT is a string, POSITION is a 0-based index into it. | 859 | If OBJECT is a string, POSITION is a 0-based index into it. |
| 847 | 860 | ||
| 861 | In a string, scan runs to the start of the string. | ||
| 862 | In a buffer, it runs to (point-min), and the value cannot be less than that. | ||
| 863 | |||
| 848 | The property values are compared with `eq'. | 864 | The property values are compared with `eq'. |
| 849 | If the property is constant all the way to the start of OBJECT, return the | 865 | If the property is constant all the way to the start of OBJECT, return the |
| 850 | first valid position in OBJECT. | 866 | first valid position in OBJECT. |
| @@ -883,19 +899,23 @@ back past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | |||
| 883 | CHECK_NUMBER_COERCE_MARKER (position); | 899 | CHECK_NUMBER_COERCE_MARKER (position); |
| 884 | 900 | ||
| 885 | if (NILP (limit)) | 901 | if (NILP (limit)) |
| 886 | XSETFASTINT (limit, BUF_BEGV (current_buffer)); | 902 | XSETFASTINT (limit, BEGV); |
| 887 | else | 903 | else |
| 888 | CHECK_NUMBER_COERCE_MARKER (limit); | 904 | CHECK_NUMBER_COERCE_MARKER (limit); |
| 889 | 905 | ||
| 890 | if (XFASTINT (position) <= XFASTINT (limit)) | 906 | if (XFASTINT (position) <= XFASTINT (limit)) |
| 891 | position = limit; | 907 | { |
| 908 | position = limit; | ||
| 909 | if (XFASTINT (position) < BEGV) | ||
| 910 | XSETFASTINT (position, BEGV); | ||
| 911 | } | ||
| 892 | else | 912 | else |
| 893 | { | 913 | { |
| 894 | Lisp_Object initial_value = | 914 | Lisp_Object initial_value |
| 895 | Fget_char_property (make_number (XFASTINT (position) - 1), | 915 | = Fget_char_property (make_number (XFASTINT (position) - 1), |
| 896 | prop, object); | 916 | prop, object); |
| 897 | 917 | ||
| 898 | for (;;) | 918 | while (1) |
| 899 | { | 919 | { |
| 900 | position = Fprevious_char_property_change (position, limit); | 920 | position = Fprevious_char_property_change (position, limit); |
| 901 | 921 | ||
| @@ -906,9 +926,9 @@ back past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | |||
| 906 | } | 926 | } |
| 907 | else | 927 | else |
| 908 | { | 928 | { |
| 909 | Lisp_Object value = | 929 | Lisp_Object value |
| 910 | Fget_char_property (make_number (XFASTINT (position) - 1), | 930 | = Fget_char_property (make_number (XFASTINT (position) - 1), |
| 911 | prop, object); | 931 | prop, object); |
| 912 | 932 | ||
| 913 | if (!EQ (value, initial_value)) | 933 | if (!EQ (value, initial_value)) |
| 914 | break; | 934 | break; |
diff --git a/src/xdisp.c b/src/xdisp.c index b1404d9c593..0ee3b19d638 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -9829,7 +9829,7 @@ redisplay_tool_bar (f) | |||
| 9829 | border = 0; | 9829 | border = 0; |
| 9830 | 9830 | ||
| 9831 | rows = f->n_tool_bar_rows; | 9831 | rows = f->n_tool_bar_rows; |
| 9832 | height = (it.last_visible_y - border) / rows; | 9832 | height = max (1, (it.last_visible_y - border) / rows); |
| 9833 | extra = it.last_visible_y - border - height * rows; | 9833 | extra = it.last_visible_y - border - height * rows; |
| 9834 | 9834 | ||
| 9835 | while (it.current_y < it.last_visible_y) | 9835 | while (it.current_y < it.last_visible_y) |
diff --git a/src/xterm.c b/src/xterm.c index b1f9e76080f..d58839db09f 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -5885,8 +5885,9 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) | |||
| 5885 | == dpyinfo->Xatom_editres) | 5885 | == dpyinfo->Xatom_editres) |
| 5886 | { | 5886 | { |
| 5887 | f = x_any_window_to_frame (dpyinfo, event.xclient.window); | 5887 | f = x_any_window_to_frame (dpyinfo, event.xclient.window); |
| 5888 | _XEditResCheckMessages (f->output_data.x->widget, NULL, | 5888 | if (f) |
| 5889 | &event, NULL); | 5889 | _XEditResCheckMessages (f->output_data.x->widget, NULL, |
| 5890 | &event, NULL); | ||
| 5890 | goto done; | 5891 | goto done; |
| 5891 | } | 5892 | } |
| 5892 | #endif /* HACK_EDITRES */ | 5893 | #endif /* HACK_EDITRES */ |
| @@ -5902,6 +5903,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) | |||
| 5902 | images, only, which should have 1 page. */ | 5903 | images, only, which should have 1 page. */ |
| 5903 | Pixmap pixmap = (Pixmap) event.xclient.data.l[1]; | 5904 | Pixmap pixmap = (Pixmap) event.xclient.data.l[1]; |
| 5904 | f = x_window_to_frame (dpyinfo, event.xclient.window); | 5905 | f = x_window_to_frame (dpyinfo, event.xclient.window); |
| 5906 | if (!f) | ||
| 5907 | goto OTHER; | ||
| 5905 | x_kill_gs_process (pixmap, f); | 5908 | x_kill_gs_process (pixmap, f); |
| 5906 | expose_frame (f, 0, 0, 0, 0); | 5909 | expose_frame (f, 0, 0, 0, 0); |
| 5907 | goto done; | 5910 | goto done; |
| @@ -5920,10 +5923,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) | |||
| 5920 | #endif /* USE_TOOLKIT_SCROLL_BARS */ | 5923 | #endif /* USE_TOOLKIT_SCROLL_BARS */ |
| 5921 | 5924 | ||
| 5922 | f = x_any_window_to_frame (dpyinfo, event.xclient.window); | 5925 | f = x_any_window_to_frame (dpyinfo, event.xclient.window); |
| 5923 | |||
| 5924 | if (!f) | 5926 | if (!f) |
| 5925 | goto OTHER; | 5927 | goto OTHER; |
| 5926 | |||
| 5927 | if (x_handle_dnd_message (f, &event.xclient, dpyinfo, &inev.ie)) | 5928 | if (x_handle_dnd_message (f, &event.xclient, dpyinfo, &inev.ie)) |
| 5928 | *finish = X_EVENT_DROP; | 5929 | *finish = X_EVENT_DROP; |
| 5929 | } | 5930 | } |
| @@ -6166,7 +6167,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) | |||
| 6166 | f = x_any_window_to_frame (dpyinfo, event.xkey.window); | 6167 | f = x_any_window_to_frame (dpyinfo, event.xkey.window); |
| 6167 | 6168 | ||
| 6168 | if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight) | 6169 | if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight) |
| 6169 | && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window)) | 6170 | && (f == 0 |
| 6171 | || !EQ (f->tool_bar_window, dpyinfo->mouse_face_window))) | ||
| 6170 | { | 6172 | { |
| 6171 | clear_mouse_face (dpyinfo); | 6173 | clear_mouse_face (dpyinfo); |
| 6172 | dpyinfo->mouse_face_hidden = 1; | 6174 | dpyinfo->mouse_face_hidden = 1; |