| fn issue1468() { |
| euc_jp_decoder_functions!({ |
| let trail_minus_offset = byte.wrapping_sub(0xA1); |
| // Fast-track Hiragana (60% according to Lunde) |
| // and Katakana (10% according to Lunde). |
| if jis0208_lead_minus_offset == 0x03 && trail_minus_offset < 0x53 { |
| // Hiragana |
| handle.write_upper_bmp(0x3041 + trail_minus_offset as u16) |
| } else if jis0208_lead_minus_offset == 0x04 && trail_minus_offset < 0x56 { |
| // Katakana |
| handle.write_upper_bmp(0x30A1 + trail_minus_offset as u16) |
| } else if trail_minus_offset > (0xFE - 0xA1) { |
| if byte < 0x80 { |
| return ( |
| DecoderResult::Malformed(1, 0), |
| unread_handle_trail.unread(), |
| handle.written(), |
| ); |
| } |
| return ( |
| DecoderResult::Malformed(2, 0), |
| unread_handle_trail.consumed(), |
| handle.written(), |
| ); |
| } else { |
| unreachable!(); |
| } |
| }); |
| } |