diff options
| author | Paul Eggert | 2011-10-13 08:23:32 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-10-13 08:23:32 -0700 |
| commit | ef0f0304040ee5e0ba503baa77109c99ce54e367 (patch) | |
| tree | cf9959c2078d01cf23cde7923f306c59676a46a2 | |
| parent | 7ebd31ee0740d85527a498100d1f14dad5e0350f (diff) | |
| parent | 81d40c920807279ccc0dae0aca46c8291755c66d (diff) | |
| download | emacs-ef0f0304040ee5e0ba503baa77109c99ce54e367.tar.gz emacs-ef0f0304040ee5e0ba503baa77109c99ce54e367.zip | |
Merge from trunk.
| -rwxr-xr-x | autogen/configure | 12 | ||||
| -rw-r--r-- | etc/NEWS | 4 | ||||
| -rw-r--r-- | lisp/ChangeLog | 12 | ||||
| -rw-r--r-- | lisp/emacs-lisp/timer.el | 41 | ||||
| -rw-r--r-- | lisp/simple.el | 18 | ||||
| -rw-r--r-- | lwlib/ChangeLog | 10 | ||||
| -rw-r--r-- | lwlib/lwlib-Xaw.c | 4 | ||||
| -rw-r--r-- | lwlib/lwlib-Xm.c | 12 | ||||
| -rw-r--r-- | lwlib/lwlib-utils.c | 2 | ||||
| -rw-r--r-- | lwlib/lwlib.c | 16 | ||||
| -rw-r--r-- | lwlib/xlwmenu.c | 2 | ||||
| -rw-r--r-- | src/ChangeLog | 14 | ||||
| -rw-r--r-- | src/bidi.c | 1 | ||||
| -rw-r--r-- | src/editfns.c | 2 | ||||
| -rw-r--r-- | src/xdisp.c | 1 |
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. |
| 14351 | have_tputs_et_al=true | 14351 | have_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; } |
| 14354 | if test "${ac_cv_search_tputs+set}" = set; then : | 14356 | if 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 |
| 14376 | for ac_lib in '' ncurses terminfo termcap; do | 14378 | for 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 | |||
| 14408 | fi | 14410 | fi |
| 14409 | 14411 | ||
| 14410 | if test "$have_tputs_et_al" != true; then | 14412 | if 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. |
| 14412 | Maybe some development libraries/packages are missing? Try installing | 14414 | These libraries were tried: libncurses, libterminfo, libtermcap, libcurses. |
| 14413 | libncurses-dev(el), libterminfo-dev(el) or similar." "$LINENO" 5 | 14415 | Please try installing whichever of these libraries is most appropriate |
| 14416 | for your system, together with its header files. | ||
| 14417 | For example, a libncurses-dev(el) or similar package." "$LINENO" 5 | ||
| 14414 | fi | 14418 | fi |
| 14415 | # Must define this when any termcap library is found. | 14419 | # Must define this when any termcap library is found. |
| 14416 | 14420 | ||
| @@ -186,8 +186,8 @@ Text that includes characters from right-to-left (RTL) scripts, such | |||
| 186 | as Arabic, Farsi, or Hebrew, is displayed in the correct visual order | 186 | as Arabic, Farsi, or Hebrew, is displayed in the correct visual order |
| 187 | as expected by users of those scripts. This display reordering is a | 187 | as 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 |
| 189 | Bidirectional Algorithm. Buffers RTL text should look exactly the | 189 | Bidirectional Algorithm. Buffers with no RTL text should look exactly |
| 190 | same as before. | 190 | the same as before. |
| 191 | 191 | ||
| 192 | For more information, see the node "Bidirectional Editing" in the | 192 | For more information, see the node "Bidirectional Editing" in the |
| 193 | Emacs Manual. | 193 | Emacs Manual. |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 62d7cc449ab..10570c2a878 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,15 @@ | |||
| 1 | 2011-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 | |||
| 7 | 2011-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 | |||
| 1 | 2011-10-12 Michael Albinus <michael.albinus@gmx.de> | 13 | 2011-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); | |||
| 417 | if the program loops without waiting in any way, the timeout will not | 413 | if the program loops without waiting in any way, the timeout will not |
| 418 | be detected. | 414 | be 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 | |||
| 1050 | in *Help* buffer. See also the command `describe-char'." | 1050 | in *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 @@ | |||
| 1 | 2011-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 | |||
| 1 | 2011-06-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 11 | 2011-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, | |||
| 186 | static void | 186 | static void |
| 187 | free_destroyed_instance (destroyed_instance* instance) | 187 | free_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) | |||
| 138 | static void | 138 | static void |
| 139 | safe_free_str (char *s) | 139 | safe_free_str (char *s) |
| 140 | { | 140 | { |
| 141 | free (s); | 141 | xfree (s); |
| 142 | } | 142 | } |
| 143 | 143 | ||
| 144 | static widget_value *widget_value_free_list = 0; | 144 | static 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 | ||
| 287 | static void | 287 | static void |
| @@ -317,7 +317,7 @@ static void | |||
| 317 | free_widget_instance (widget_instance *instance) | 317 | free_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 | ||
| 323 | static widget_info * | 323 | static 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 | ||
| 790 | 2011-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 | |||
| 795 | 2011-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 | |||
| 790 | 2011-10-12 Eli Zaretskii <eliz@gnu.org> | 804 | 2011-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; |