aboutsummaryrefslogtreecommitdiffstats
path: root/src/syntax.c
diff options
context:
space:
mode:
authorKenichi Handa2002-09-18 12:14:36 +0000
committerKenichi Handa2002-09-18 12:14:36 +0000
commit8c6e735bfb70b777db18b9f05c40ed1e0f479fee (patch)
treeb90582b7cc6f76bdda07b61fec593af62cf4e9c0 /src/syntax.c
parent1498173f7eb02ae80be8a07de49bf98d45330888 (diff)
downloademacs-8c6e735bfb70b777db18b9f05c40ed1e0f479fee.tar.gz
emacs-8c6e735bfb70b777db18b9f05c40ed1e0f479fee.zip
(skip_syntaxes): Fix previous change.
Diffstat (limited to 'src/syntax.c')
-rw-r--r--src/syntax.c55
1 files changed, 30 insertions, 25 deletions
diff --git a/src/syntax.c b/src/syntax.c
index e16d8bc45ec..de0ef9078cf 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -1731,6 +1731,9 @@ skip_syntaxes (forwardp, string, lim)
1731 if (XINT (lim) < BEGV) 1731 if (XINT (lim) < BEGV)
1732 XSETFASTINT (lim, BEGV); 1732 XSETFASTINT (lim, BEGV);
1733 1733
1734 if (forward ? PT >= XFASTINT (lim) : PT <= XFASTINT (lim))
1735 return 0;
1736
1734 multibyte = (!NILP (current_buffer->enable_multibyte_characters) 1737 multibyte = (!NILP (current_buffer->enable_multibyte_characters)
1735 && (lim - PT != CHAR_TO_BYTE (lim) - PT_BYTE)); 1738 && (lim - PT != CHAR_TO_BYTE (lim) - PT_BYTE));
1736 1739
@@ -1774,27 +1777,28 @@ skip_syntaxes (forwardp, string, lim)
1774 { 1777 {
1775 if (multibyte) 1778 if (multibyte)
1776 { 1779 {
1777 if (pos < XINT (lim)) 1780 while (fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))])
1778 while (fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))]) 1781 {
1779 { 1782 /* Since we already checked for multibyteness,
1780 /* Since we already checked for multibyteness, 1783 avoid using INC_BOTH which checks again. */
1781 avoid using INC_BOTH which checks again. */ 1784 INC_POS (pos_byte);
1782 INC_POS (pos_byte); 1785 pos++;
1783 pos++; 1786 if (pos >= XINT (lim))
1784 if (pos >= XINT (lim)) 1787 break;
1785 break; 1788 UPDATE_SYNTAX_TABLE_FORWARD (pos);
1786 UPDATE_SYNTAX_TABLE_FORWARD (pos); 1789 }
1787 }
1788 } 1790 }
1789 else 1791 else
1790 { 1792 {
1791 while (pos < XINT (lim)) 1793 while (1)
1792 { 1794 {
1793 c = FETCH_BYTE (pos_byte); 1795 c = FETCH_BYTE (pos_byte);
1794 MAKE_CHAR_MULTIBYTE (c); 1796 MAKE_CHAR_MULTIBYTE (c);
1795 if (! fastmap[(int) SYNTAX (c)]) 1797 if (! fastmap[(int) SYNTAX (c)])
1796 break; 1798 break;
1797 pos++, pos_byte++; 1799 pos++, pos_byte++;
1800 if (pos >= XINT (lim))
1801 break;
1798 UPDATE_SYNTAX_TABLE_FORWARD (pos); 1802 UPDATE_SYNTAX_TABLE_FORWARD (pos);
1799 } 1803 }
1800 } 1804 }
@@ -1803,13 +1807,15 @@ skip_syntaxes (forwardp, string, lim)
1803 { 1807 {
1804 if (multibyte) 1808 if (multibyte)
1805 { 1809 {
1806 while (pos > XINT (lim)) 1810 while (1)
1807 { 1811 {
1808 int savepos = pos_byte; 1812 int savepos = pos_byte;
1809 /* Since we already checked for multibyteness, 1813 /* Since we already checked for multibyteness,
1810 avoid using DEC_BOTH which checks again. */ 1814 avoid using DEC_BOTH which checks again. */
1811 pos--; 1815 pos--;
1812 DEC_POS (pos_byte); 1816 DEC_POS (pos_byte);
1817 if (pos <= XINT (lim))
1818 break;
1813 UPDATE_SYNTAX_TABLE_BACKWARD (pos); 1819 UPDATE_SYNTAX_TABLE_BACKWARD (pos);
1814 if (!fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))]) 1820 if (!fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))])
1815 { 1821 {
@@ -1821,18 +1827,17 @@ skip_syntaxes (forwardp, string, lim)
1821 } 1827 }
1822 else 1828 else
1823 { 1829 {
1824 if (pos > XINT (lim)) 1830 while (1)
1825 while (1) 1831 {
1826 { 1832 c = FETCH_BYTE (pos_byte - 1);
1827 c = FETCH_BYTE (pos_byte - 1); 1833 MAKE_CHAR_MULTIBYTE (c);
1828 MAKE_CHAR_MULTIBYTE (c); 1834 if (! fastmap[(int) SYNTAX (c)])
1829 if (! fastmap[(int) SYNTAX (c)]) 1835 break;
1830 break; 1836 pos--, pos_byte--;
1831 pos--, pos_byte--; 1837 if (pos <= XINT (lim))
1832 if (pos <= XINT (lim)) 1838 break;
1833 break; 1839 UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
1834 UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1); 1840 }
1835 }
1836 } 1841 }
1837 } 1842 }
1838 1843