Mercurial > emacs
comparison src/coding.c @ 21939:e9014d2166a4
(encode_coding_iso2022): Don't skip a code following some invalid code.
| author | Richard M. Stallman <rms@gnu.org> |
|---|---|
| date | Mon, 04 May 1998 22:33:38 +0000 |
| parents | 0a3488a71129 |
| children | 8a2d45cadd66 |
comparison
equal
deleted
inserted
replaced
| 21938:f4c17bc26d52 | 21939:e9014d2166a4 |
|---|---|
| 1866 ONE_MORE_BYTE (c2); | 1866 ONE_MORE_BYTE (c2); |
| 1867 if (c2 < 0xA0) | 1867 if (c2 < 0xA0) |
| 1868 { | 1868 { |
| 1869 /* invalid sequence */ | 1869 /* invalid sequence */ |
| 1870 *dst++ = c1; | 1870 *dst++ = c1; |
| 1871 *dst++ = c2; | 1871 src--; |
| 1872 coding->consumed_char += 2; | 1872 coding->consumed_char++; |
| 1873 } | 1873 } |
| 1874 else | 1874 else |
| 1875 ENCODE_ISO_CHARACTER (c1, c2, /* dummy */ c3); | 1875 ENCODE_ISO_CHARACTER (c1, c2, /* dummy */ c3); |
| 1876 break; | 1876 break; |
| 1877 | 1877 |
| 1879 TWO_MORE_BYTES (c2, c3); | 1879 TWO_MORE_BYTES (c2, c3); |
| 1880 if (c2 < 0xA0 || c3 < 0xA0) | 1880 if (c2 < 0xA0 || c3 < 0xA0) |
| 1881 { | 1881 { |
| 1882 /* invalid sequence */ | 1882 /* invalid sequence */ |
| 1883 *dst++ = c1; | 1883 *dst++ = c1; |
| 1884 *dst++ = c2; | 1884 src -= 2; |
| 1885 *dst++ = c3; | 1885 coding->consumed_char++; |
| 1886 coding->consumed_char += 3; | |
| 1887 } | 1886 } |
| 1888 else if (c1 < LEADING_CODE_PRIVATE_11) | 1887 else if (c1 < LEADING_CODE_PRIVATE_11) |
| 1889 ENCODE_ISO_CHARACTER (c1, c2, c3); | 1888 ENCODE_ISO_CHARACTER (c1, c2, c3); |
| 1890 else | 1889 else |
| 1891 ENCODE_ISO_CHARACTER (c2, c3, /* dummy */ c4); | 1890 ENCODE_ISO_CHARACTER (c2, c3, /* dummy */ c4); |
| 1895 THREE_MORE_BYTES (c2, c3, c4); | 1894 THREE_MORE_BYTES (c2, c3, c4); |
| 1896 if (c2 < 0xA0 || c3 < 0xA0 || c4 < 0xA0) | 1895 if (c2 < 0xA0 || c3 < 0xA0 || c4 < 0xA0) |
| 1897 { | 1896 { |
| 1898 /* invalid sequence */ | 1897 /* invalid sequence */ |
| 1899 *dst++ = c1; | 1898 *dst++ = c1; |
| 1900 *dst++ = c2; | 1899 src -= 3; |
| 1901 *dst++ = c3; | 1900 coding->consumed_char++; |
| 1902 *dst++ = c4; | |
| 1903 coding->consumed_char += 4; | |
| 1904 } | 1901 } |
| 1905 else | 1902 else |
| 1906 ENCODE_ISO_CHARACTER (c2, c3, c4); | 1903 ENCODE_ISO_CHARACTER (c2, c3, c4); |
| 1907 break; | 1904 break; |
| 1908 | 1905 |
| 1910 ONE_MORE_BYTE (c2); | 1907 ONE_MORE_BYTE (c2); |
| 1911 if (c2 < 0xA0) | 1908 if (c2 < 0xA0) |
| 1912 { | 1909 { |
| 1913 /* invalid sequence */ | 1910 /* invalid sequence */ |
| 1914 *dst++ = c1; | 1911 *dst++ = c1; |
| 1915 *dst++ = c2; | 1912 src--; |
| 1916 coding->consumed_char += 2; | 1913 coding->consumed_char++; |
| 1917 } | 1914 } |
| 1918 else if (c2 == 0xFF) | 1915 else if (c2 == 0xFF) |
| 1919 { | 1916 { |
| 1920 ENCODE_RESET_PLANE_AND_REGISTER; | 1917 ENCODE_RESET_PLANE_AND_REGISTER; |
| 1921 coding->composing = COMPOSING_WITH_RULE_HEAD; | 1918 coding->composing = COMPOSING_WITH_RULE_HEAD; |
