diff options
| author | Joakim Verona | 2013-01-12 00:04:04 +0100 |
|---|---|---|
| committer | Joakim Verona | 2013-01-12 00:04:04 +0100 |
| commit | c655adbbab4baf73b652c86dcc53a2fc049ea7a5 (patch) | |
| tree | b3198033222acb2c309652a0e11590f109d037c6 /src/editfns.c | |
| parent | 26f277ba01010776e63623d446f182f5b6f23dd3 (diff) | |
| parent | c88be99696aa39e3aed1e32ada7bf6e0cc472c90 (diff) | |
| download | emacs-c655adbbab4baf73b652c86dcc53a2fc049ea7a5.tar.gz emacs-c655adbbab4baf73b652c86dcc53a2fc049ea7a5.zip | |
auto upstream
Diffstat (limited to 'src/editfns.c')
| -rw-r--r-- | src/editfns.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/editfns.c b/src/editfns.c index 26dfdac3ba8..64269bab8df 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -4522,7 +4522,7 @@ Transposing beyond buffer boundaries is an error. */) | |||
| 4522 | (Lisp_Object startr1, Lisp_Object endr1, Lisp_Object startr2, Lisp_Object endr2, Lisp_Object leave_markers) | 4522 | (Lisp_Object startr1, Lisp_Object endr1, Lisp_Object startr2, Lisp_Object endr2, Lisp_Object leave_markers) |
| 4523 | { | 4523 | { |
| 4524 | register ptrdiff_t start1, end1, start2, end2; | 4524 | register ptrdiff_t start1, end1, start2, end2; |
| 4525 | ptrdiff_t start1_byte, start2_byte, len1_byte, len2_byte; | 4525 | ptrdiff_t start1_byte, start2_byte, len1_byte, len2_byte, end2_byte; |
| 4526 | ptrdiff_t gap, len1, len_mid, len2; | 4526 | ptrdiff_t gap, len1, len_mid, len2; |
| 4527 | unsigned char *start1_addr, *start2_addr, *temp; | 4527 | unsigned char *start1_addr, *start2_addr, *temp; |
| 4528 | 4528 | ||
| @@ -4583,20 +4583,22 @@ Transposing beyond buffer boundaries is an error. */) | |||
| 4583 | the gap the minimum distance to get it out of the way, and then | 4583 | the gap the minimum distance to get it out of the way, and then |
| 4584 | deal with an unbroken array. */ | 4584 | deal with an unbroken array. */ |
| 4585 | 4585 | ||
| 4586 | start1_byte = CHAR_TO_BYTE (start1); | ||
| 4587 | end2_byte = CHAR_TO_BYTE (end2); | ||
| 4588 | |||
| 4586 | /* Make sure the gap won't interfere, by moving it out of the text | 4589 | /* Make sure the gap won't interfere, by moving it out of the text |
| 4587 | we will operate on. */ | 4590 | we will operate on. */ |
| 4588 | if (start1 < gap && gap < end2) | 4591 | if (start1 < gap && gap < end2) |
| 4589 | { | 4592 | { |
| 4590 | if (gap - start1 < end2 - gap) | 4593 | if (gap - start1 < end2 - gap) |
| 4591 | move_gap (start1); | 4594 | move_gap_both (start1, start1_byte); |
| 4592 | else | 4595 | else |
| 4593 | move_gap (end2); | 4596 | move_gap_both (end2, end2_byte); |
| 4594 | } | 4597 | } |
| 4595 | 4598 | ||
| 4596 | start1_byte = CHAR_TO_BYTE (start1); | ||
| 4597 | start2_byte = CHAR_TO_BYTE (start2); | 4599 | start2_byte = CHAR_TO_BYTE (start2); |
| 4598 | len1_byte = CHAR_TO_BYTE (end1) - start1_byte; | 4600 | len1_byte = CHAR_TO_BYTE (end1) - start1_byte; |
| 4599 | len2_byte = CHAR_TO_BYTE (end2) - start2_byte; | 4601 | len2_byte = end2_byte - start2_byte; |
| 4600 | 4602 | ||
| 4601 | #ifdef BYTE_COMBINING_DEBUG | 4603 | #ifdef BYTE_COMBINING_DEBUG |
| 4602 | if (end1 == start2) | 4604 | if (end1 == start2) |