aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2011-10-13 08:23:32 -0700
committerPaul Eggert2011-10-13 08:23:32 -0700
commitef0f0304040ee5e0ba503baa77109c99ce54e367 (patch)
treecf9959c2078d01cf23cde7923f306c59676a46a2
parent7ebd31ee0740d85527a498100d1f14dad5e0350f (diff)
parent81d40c920807279ccc0dae0aca46c8291755c66d (diff)
downloademacs-ef0f0304040ee5e0ba503baa77109c99ce54e367.tar.gz
emacs-ef0f0304040ee5e0ba503baa77109c99ce54e367.zip
Merge from trunk.
-rwxr-xr-xautogen/configure12
-rw-r--r--etc/NEWS4
-rw-r--r--lisp/ChangeLog12
-rw-r--r--lisp/emacs-lisp/timer.el41
-rw-r--r--lisp/simple.el18
-rw-r--r--lwlib/ChangeLog10
-rw-r--r--lwlib/lwlib-Xaw.c4
-rw-r--r--lwlib/lwlib-Xm.c12
-rw-r--r--lwlib/lwlib-utils.c2
-rw-r--r--lwlib/lwlib.c16
-rw-r--r--lwlib/xlwmenu.c2
-rw-r--r--src/ChangeLog14
-rw-r--r--src/bidi.c1
-rw-r--r--src/editfns.c2
-rw-r--r--src/xdisp.c1
15 files changed, 100 insertions, 51 deletions
diff --git a/autogen/configure b/autogen/configure
index e86db7a7362..8f50731f3f1 100755
--- a/autogen/configure
+++ b/autogen/configure
@@ -14349,6 +14349,8 @@ done
14349# than to expect to find it in ncurses. 14349# than to expect to find it in ncurses.
14350# Also we need tputs and friends to be able to build at all. 14350# Also we need tputs and friends to be able to build at all.
14351have_tputs_et_al=true 14351have_tputs_et_al=true
14352# Maybe curses should be tried earlier?
14353# See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
14352{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tputs" >&5 14354{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tputs" >&5
14353$as_echo_n "checking for library containing tputs... " >&6; } 14355$as_echo_n "checking for library containing tputs... " >&6; }
14354if test "${ac_cv_search_tputs+set}" = set; then : 14356if test "${ac_cv_search_tputs+set}" = set; then :
@@ -14373,7 +14375,7 @@ return tputs ();
14373 return 0; 14375 return 0;
14374} 14376}
14375_ACEOF 14377_ACEOF
14376for ac_lib in '' ncurses terminfo termcap; do 14378for ac_lib in '' ncurses terminfo termcap curses; do
14377 if test -z "$ac_lib"; then 14379 if test -z "$ac_lib"; then
14378 ac_res="none required" 14380 ac_res="none required"
14379 else 14381 else
@@ -14408,9 +14410,11 @@ else
14408fi 14410fi
14409 14411
14410if test "$have_tputs_et_al" != true; then 14412if test "$have_tputs_et_al" != true; then
14411 as_fn_error "I couldn't find termcap functions (tputs and friends). 14413 as_fn_error "The required function \`tputs' was not found in any library.
14412Maybe some development libraries/packages are missing? Try installing 14414These libraries were tried: libncurses, libterminfo, libtermcap, libcurses.
14413libncurses-dev(el), libterminfo-dev(el) or similar." "$LINENO" 5 14415Please try installing whichever of these libraries is most appropriate
14416for your system, together with its header files.
14417For example, a libncurses-dev(el) or similar package." "$LINENO" 5
14414fi 14418fi
14415# Must define this when any termcap library is found. 14419# Must define this when any termcap library is found.
14416 14420
diff --git a/etc/NEWS b/etc/NEWS
index 8095cd964f6..b9fed18355d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -186,8 +186,8 @@ Text that includes characters from right-to-left (RTL) scripts, such
186as Arabic, Farsi, or Hebrew, is displayed in the correct visual order 186as Arabic, Farsi, or Hebrew, is displayed in the correct visual order
187as expected by users of those scripts. This display reordering is a 187as expected by users of those scripts. This display reordering is a
188"Full bidirectionality" class implementation of the Unicode 188"Full bidirectionality" class implementation of the Unicode
189Bidirectional Algorithm. Buffers RTL text should look exactly the 189Bidirectional Algorithm. Buffers with no RTL text should look exactly
190same as before. 190the same as before.
191 191
192For more information, see the node "Bidirectional Editing" in the 192For more information, see the node "Bidirectional Editing" in the
193Emacs Manual. 193Emacs Manual.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 62d7cc449ab..10570c2a878 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,15 @@
12011-10-13 Eli Zaretskii <eliz@gnu.org>
2
3 * simple.el (what-cursor-position): Fix the display of the
4 character info for LRE, LRO, RLE, and RLO characters by appending
5 an invisible PDF.
6
72011-10-13 Stefan Monnier <monnier@iro.umontreal.ca>
8
9 * emacs-lisp/timer.el (with-timeout): Make sure we cancel the timer
10 even in case of error; add debug spec; simplify data flow.
11 (with-timeout-handler): Remove.
12
12011-10-12 Michael Albinus <michael.albinus@gmx.de> 132011-10-12 Michael Albinus <michael.albinus@gmx.de>
2 14
3 Fix Bug#6019, Bug#9315. 15 Fix Bug#6019, Bug#9315.
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index 0e007ff7176..706c6fd0ba3 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -402,10 +402,6 @@ This function returns a timer object which you can use in `cancel-timer'."
402 (timer-activate-when-idle timer t) 402 (timer-activate-when-idle timer t)
403 timer)) 403 timer))
404 404
405(defun with-timeout-handler (tag)
406 "This is the timer function used for the timer made by `with-timeout'."
407 (throw tag 'timeout))
408
409(defvar with-timeout-timers nil 405(defvar with-timeout-timers nil
410 "List of all timers used by currently pending `with-timeout' calls.") 406 "List of all timers used by currently pending `with-timeout' calls.")
411 407
@@ -417,24 +413,27 @@ event (such as keyboard input, input from subprocesses, or a certain time);
417if the program loops without waiting in any way, the timeout will not 413if the program loops without waiting in any way, the timeout will not
418be detected. 414be detected.
419\n(fn (SECONDS TIMEOUT-FORMS...) BODY)" 415\n(fn (SECONDS TIMEOUT-FORMS...) BODY)"
420 (declare (indent 1)) 416 (declare (indent 1) (debug ((form body) body)))
421 (let ((seconds (car list)) 417 (let ((seconds (car list))
422 (timeout-forms (cdr list))) 418 (timeout-forms (cdr list))
423 `(let ((with-timeout-tag (cons nil nil)) 419 (timeout (make-symbol "timeout")))
424 with-timeout-value with-timeout-timer 420 `(let ((-with-timeout-value-
425 (with-timeout-timers with-timeout-timers)) 421 (catch ',timeout
426 (if (catch with-timeout-tag 422 (let* ((-with-timeout-timer-
427 (progn 423 (run-with-timer ,seconds nil
428 (setq with-timeout-timer 424 (lambda () (throw ',timeout ',timeout))))
429 (run-with-timer ,seconds nil 425 (with-timeout-timers
430 'with-timeout-handler 426 (cons -with-timeout-timer- with-timeout-timers)))
431 with-timeout-tag)) 427 (unwind-protect
432 (push with-timeout-timer with-timeout-timers) 428 ,@body
433 (setq with-timeout-value (progn . ,body)) 429 (cancel-timer -with-timeout-timer-))))))
434 nil)) 430 ;; It is tempting to avoid the `if' altogether and instead run
435 (progn . ,timeout-forms) 431 ;; timeout-forms in the timer, just before throwing `timeout'.
436 (cancel-timer with-timeout-timer) 432 ;; But that would mean that timeout-forms are run in the deeper
437 with-timeout-value)))) 433 ;; dynamic context of the timer, with inhibit-quit set etc...
434 (if (eq -with-timeout-value- ',timeout)
435 (progn ,@timeout-forms)
436 -with-timeout-value-))))
438 437
439(defun with-timeout-suspend () 438(defun with-timeout-suspend ()
440 "Stop the clock for `with-timeout'. Used by debuggers. 439 "Stop the clock for `with-timeout'. Used by debuggers.
diff --git a/lisp/simple.el b/lisp/simple.el
index af6d855d9c0..6d0e7543549 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1050,6 +1050,16 @@ In addition, with prefix argument, show details about that character
1050in *Help* buffer. See also the command `describe-char'." 1050in *Help* buffer. See also the command `describe-char'."
1051 (interactive "P") 1051 (interactive "P")
1052 (let* ((char (following-char)) 1052 (let* ((char (following-char))
1053 ;; If the character is one of LRE, LRO, RLE, RLO, it will
1054 ;; start a directional embedding, which could completely
1055 ;; disrupt the rest of the line (e.g., RLO will display the
1056 ;; rest of the line right-to-left). So we put an invisible
1057 ;; PDF character after these characters, to end the
1058 ;; embedding, which eliminates any effects on the rest of the
1059 ;; line.
1060 (pdf (if (memq char '(?\x202a ?\x202b ?\x202d ?\x202e))
1061 (propertize (string ?\x202c) 'invisible t)
1062 ""))
1053 (beg (point-min)) 1063 (beg (point-min))
1054 (end (point-max)) 1064 (end (point-max))
1055 (pos (point)) 1065 (pos (point))
@@ -1109,18 +1119,18 @@ in *Help* buffer. See also the command `describe-char'."
1109 ;; We show the detailed information about CHAR. 1119 ;; We show the detailed information about CHAR.
1110 (describe-char (point))) 1120 (describe-char (point)))
1111 (if (or (/= beg 1) (/= end (1+ total))) 1121 (if (or (/= beg 1) (/= end (1+ total)))
1112 (message "Char: %s %s point=%d of %d (%d%%) <%d-%d> column=%d%s" 1122 (message "Char: %s%s %s point=%d of %d (%d%%) <%d-%d> column=%d%s"
1113 (if (< char 256) 1123 (if (< char 256)
1114 (single-key-description char) 1124 (single-key-description char)
1115 (buffer-substring-no-properties (point) (1+ (point)))) 1125 (buffer-substring-no-properties (point) (1+ (point))))
1116 encoding-msg pos total percent beg end col hscroll) 1126 pdf encoding-msg pos total percent beg end col hscroll)
1117 (message "Char: %s %s point=%d of %d (%d%%) column=%d%s" 1127 (message "Char: %s%s %s point=%d of %d (%d%%) column=%d%s"
1118 (if enable-multibyte-characters 1128 (if enable-multibyte-characters
1119 (if (< char 128) 1129 (if (< char 128)
1120 (single-key-description char) 1130 (single-key-description char)
1121 (buffer-substring-no-properties (point) (1+ (point)))) 1131 (buffer-substring-no-properties (point) (1+ (point))))
1122 (single-key-description char)) 1132 (single-key-description char))
1123 encoding-msg pos total percent col hscroll)))))) 1133 pdf encoding-msg pos total percent col hscroll))))))
1124 1134
1125;; Initialize read-expression-map. It is defined at C level. 1135;; Initialize read-expression-map. It is defined at C level.
1126(let ((m (make-sparse-keymap))) 1136(let ((m (make-sparse-keymap)))
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog
index 7e332a9fd5d..3b494865f0c 100644
--- a/lwlib/ChangeLog
+++ b/lwlib/ChangeLog
@@ -1,3 +1,13 @@
12011-10-13 Dmitry Antipov <dmantipov@yandex.ru>
2
3 * lwlib-Xaw.c (openFont, xaw_destroy_instance): Replace free with
4 xfree to avoid crash when xmalloc overrun checking is enabled.
5 * lwlib-Xm.c (free_destroyed_instance, xm_update_one_value): Ditto.
6 * lwlib-utils.c (XtApplyToWidgets): Ditto.
7 * lwlib.c (safe_free_str, free_widget_value, free_widget_value_tree)
8 (free_widget_info, free_widget_instance, name_to_widget): Ditto.
9 * xlwmenu.c (openXftFont): Ditto.
10
12011-06-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 112011-06-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 12
3 * Makefile.in (ALL_CFLAGS): Add -I../lib for generated header files 13 * Makefile.in (ALL_CFLAGS): Add -I../lib for generated header files
diff --git a/lwlib/lwlib-Xaw.c b/lwlib/lwlib-Xaw.c
index 9c9a007bc15..0eea0aba7b6 100644
--- a/lwlib/lwlib-Xaw.c
+++ b/lwlib/lwlib-Xaw.c
@@ -136,7 +136,7 @@ openFont (Widget widget, char *name)
136 } 136 }
137 137
138 fn = XftFontOpenName (XtDisplay (widget), screen, fname); 138 fn = XftFontOpenName (XtDisplay (widget), screen, fname);
139 if (fname != name) free (fname); 139 if (fname != name) xfree (fname);
140 140
141 return fn; 141 return fn;
142} 142}
@@ -384,7 +384,7 @@ xaw_destroy_instance (widget_instance *instance)
384 if (instance->xft_data[0].xft_font) 384 if (instance->xft_data[0].xft_font)
385 XftFontClose (XtDisplay (instance->widget), 385 XftFontClose (XtDisplay (instance->widget),
386 instance->xft_data[0].xft_font); 386 instance->xft_data[0].xft_font);
387 free (instance->xft_data); 387 xfree (instance->xft_data);
388 } 388 }
389#endif 389#endif
390 if (XtIsSubclass (instance->widget, dialogWidgetClass)) 390 if (XtIsSubclass (instance->widget, dialogWidgetClass))
diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c
index 2b7677a02f5..058e2e779c7 100644
--- a/lwlib/lwlib-Xm.c
+++ b/lwlib/lwlib-Xm.c
@@ -186,9 +186,9 @@ make_destroyed_instance (char* name,
186static void 186static void
187free_destroyed_instance (destroyed_instance* instance) 187free_destroyed_instance (destroyed_instance* instance)
188{ 188{
189 free (instance->name); 189 xfree (instance->name);
190 free (instance->type); 190 xfree (instance->type);
191 free (instance); 191 xfree (instance);
192} 192}
193 193
194 /* motif utility functions */ 194 /* motif utility functions */
@@ -928,13 +928,13 @@ xm_update_one_value (widget_instance* instance,
928 } 928 }
929 else if (class == xmTextWidgetClass) 929 else if (class == xmTextWidgetClass)
930 { 930 {
931 free (val->value); 931 xfree (val->value);
932 val->value = XmTextGetString (widget); 932 val->value = XmTextGetString (widget);
933 val->edited = True; 933 val->edited = True;
934 } 934 }
935 else if (class == xmTextFieldWidgetClass) 935 else if (class == xmTextFieldWidgetClass)
936 { 936 {
937 free (val->value); 937 xfree (val->value);
938 val->value = XmTextFieldGetString (widget); 938 val->value = XmTextFieldGetString (widget);
939 val->edited = True; 939 val->edited = True;
940 } 940 }
@@ -959,7 +959,7 @@ xm_update_one_value (widget_instance* instance,
959 XtVaGetValues (toggle, XmNset, &set, NULL); 959 XtVaGetValues (toggle, XmNset, &set, NULL);
960 if (set) 960 if (set)
961 { 961 {
962 free (val->value); 962 xfree (val->value);
963 val->value = safe_strdup (XtName (toggle)); 963 val->value = safe_strdup (XtName (toggle));
964 } 964 }
965 } 965 }
diff --git a/lwlib/lwlib-utils.c b/lwlib/lwlib-utils.c
index 7a0dd1b264a..fe236a210f3 100644
--- a/lwlib/lwlib-utils.c
+++ b/lwlib/lwlib-utils.c
@@ -80,7 +80,7 @@ XtApplyToWidgets (Widget w, XtApplyToWidgetsProc proc, XtPointer arg)
80 XtApplyToWidgets (kids [i], proc, arg); 80 XtApplyToWidgets (kids [i], proc, arg);
81 proc (kids [i], arg); 81 proc (kids [i], arg);
82 } 82 }
83 free (kids); 83 xfree (kids);
84 } 84 }
85} 85}
86 86
diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c
index 9d8ec3330d3..7e3538aec04 100644
--- a/lwlib/lwlib.c
+++ b/lwlib/lwlib.c
@@ -138,7 +138,7 @@ my_strcasecmp (const char *s1, const char *s2)
138static void 138static void
139safe_free_str (char *s) 139safe_free_str (char *s)
140{ 140{
141 free (s); 141 xfree (s);
142} 142}
143 143
144static widget_value *widget_value_free_list = 0; 144static widget_value *widget_value_free_list = 0;
@@ -176,7 +176,7 @@ free_widget_value (widget_value *wv)
176 { 176 {
177 /* When the number of already allocated cells is too big, 177 /* When the number of already allocated cells is too big,
178 We free it. */ 178 We free it. */
179 free (wv); 179 xfree (wv);
180 malloc_cpt--; 180 malloc_cpt--;
181 } 181 }
182 else 182 else
@@ -192,9 +192,9 @@ free_widget_value_tree (widget_value *wv)
192 if (!wv) 192 if (!wv)
193 return; 193 return;
194 194
195 free (wv->name); 195 xfree (wv->name);
196 free (wv->value); 196 xfree (wv->value);
197 free (wv->key); 197 xfree (wv->key);
198 198
199 wv->name = wv->value = wv->key = (char *) 0xDEADBEEF; 199 wv->name = wv->value = wv->key = (char *) 0xDEADBEEF;
200 200
@@ -281,7 +281,7 @@ free_widget_info (widget_info *info)
281 safe_free_str (info->name); 281 safe_free_str (info->name);
282 free_widget_value_tree (info->val); 282 free_widget_value_tree (info->val);
283 memset ((void*)info, 0xDEADBEEF, sizeof (widget_info)); 283 memset ((void*)info, 0xDEADBEEF, sizeof (widget_info));
284 free (info); 284 xfree (info);
285} 285}
286 286
287static void 287static void
@@ -317,7 +317,7 @@ static void
317free_widget_instance (widget_instance *instance) 317free_widget_instance (widget_instance *instance)
318{ 318{
319 memset ((void*)instance, 0xDEADBEEF, sizeof (widget_instance)); 319 memset ((void*)instance, 0xDEADBEEF, sizeof (widget_instance));
320 free (instance); 320 xfree (instance);
321} 321}
322 322
323static widget_info * 323static widget_info *
@@ -602,7 +602,7 @@ name_to_widget (widget_instance *instance, const char *name)
602 602
603 widget = XtNameToWidget (instance->widget, real_name); 603 widget = XtNameToWidget (instance->widget, real_name);
604 604
605 free (real_name); 605 xfree (real_name);
606 } 606 }
607 return widget; 607 return widget;
608} 608}
diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c
index e9ec604ae7f..5ed33d5be05 100644
--- a/lwlib/xlwmenu.c
+++ b/lwlib/xlwmenu.c
@@ -1891,7 +1891,7 @@ openXftFont (XlwMenuWidget mw)
1891 } 1891 }
1892 } 1892 }
1893 1893
1894 if (fname != mw->menu.fontName) free (fname); 1894 if (fname != mw->menu.fontName) xfree (fname);
1895 1895
1896 return mw->menu.xft_font != 0; 1896 return mw->menu.xft_font != 0;
1897} 1897}
diff --git a/src/ChangeLog b/src/ChangeLog
index e22eab5f072..723556414f4 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -787,6 +787,20 @@
787 rather than rolling our own approximation. 787 rather than rolling our own approximation.
788 (SCROLL_BAR_VEC_SIZE): Remove; not used. 788 (SCROLL_BAR_VEC_SIZE): Remove; not used.
789 789
7902011-10-13 Dmitry Antipov <dmantipov@yandex.ru>
791
792 * editfns.c (Fset_time_zone_rule): Replace free with xfree to
793 avoid crash when xmalloc overrun checking is enabled.
794
7952011-10-13 Eli Zaretskii <eliz@gnu.org>
796
797 * xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize
798 itb.paragraph_dir to NEUTRAL_DIR. Fixes an occasional incorrect
799 cursor motion with <left> and <right> arrow keys.
800
801 * bidi.c (bidi_init_it): Don't initialize paragraph_dir here, as
802 some callers set that themselves.
803
7902011-10-12 Eli Zaretskii <eliz@gnu.org> 8042011-10-12 Eli Zaretskii <eliz@gnu.org>
791 805
792 * xdisp.c (find_row_edges): Handle the case where ROW comes from a 806 * xdisp.c (find_row_edges): Handle the case where ROW comes from a
diff --git a/src/bidi.c b/src/bidi.c
index e4965ed59ac..c6d7db96576 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -808,7 +808,6 @@ bidi_init_it (ptrdiff_t charpos, ptrdiff_t bytepos, int frame_window_p,
808 bidi_it->nchars = -1; /* to be computed in bidi_resolve_explicit_1 */ 808 bidi_it->nchars = -1; /* to be computed in bidi_resolve_explicit_1 */
809 bidi_it->first_elt = 1; 809 bidi_it->first_elt = 1;
810 bidi_set_paragraph_end (bidi_it); 810 bidi_set_paragraph_end (bidi_it);
811 bidi_it->paragraph_dir = NEUTRAL_DIR;
812 bidi_it->new_paragraph = 1; 811 bidi_it->new_paragraph = 1;
813 bidi_it->separator_limit = -1; 812 bidi_it->separator_limit = -1;
814 bidi_it->type = NEUTRAL_B; 813 bidi_it->type = NEUTRAL_B;
diff --git a/src/editfns.c b/src/editfns.c
index 8489a47649e..48b601860ca 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -2069,7 +2069,7 @@ only the former. */)
2069 } 2069 }
2070 2070
2071 set_time_zone_rule (tzstring); 2071 set_time_zone_rule (tzstring);
2072 free (environbuf); 2072 xfree (environbuf);
2073 environbuf = environ; 2073 environbuf = environ;
2074 2074
2075 return Qnil; 2075 return Qnil;
diff --git a/src/xdisp.c b/src/xdisp.c
index e9e8f8f4206..a264da3892a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -19491,6 +19491,7 @@ See also `bidi-paragraph-direction'. */)
19491 bytepos--; 19491 bytepos--;
19492 } 19492 }
19493 bidi_init_it (pos, bytepos, FRAME_WINDOW_P (SELECTED_FRAME ()), &itb); 19493 bidi_init_it (pos, bytepos, FRAME_WINDOW_P (SELECTED_FRAME ()), &itb);
19494 itb.paragraph_dir = NEUTRAL_DIR;
19494 itb.string.s = NULL; 19495 itb.string.s = NULL;
19495 itb.string.lstring = Qnil; 19496 itb.string.lstring = Qnil;
19496 itb.string.bufpos = 0; 19497 itb.string.bufpos = 0;