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;