Skip to content

Commit 2bf0ae7

Browse files
committed
optimize code
1 parent 33489ca commit 2bf0ae7

File tree

1 file changed

+5
-14
lines changed

1 file changed

+5
-14
lines changed

ext/mbstring/libmbfl/mbfl/mbfilter.c

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,9 +1096,8 @@ mbfl_strcut(
10961096
} else {
10971097
mbfl_convert_filter *encoder = NULL;
10981098
mbfl_convert_filter *decoder = NULL;
1099+
int mode_backup;
10991100
const unsigned char *p, *q, *r;
1100-
size_t position = 0;
1101-
unsigned char illegal_substchar;
11021101
struct {
11031102
mbfl_convert_filter encoder;
11041103
mbfl_convert_filter decoder;
@@ -1114,6 +1113,8 @@ mbfl_strcut(
11141113
return NULL;
11151114
}
11161115

1116+
mode_backup = decoder->illegal_mode;
1117+
11171118
/* wchar filter */
11181119
if (!(encoder = mbfl_convert_filter_new(
11191120
string->encoding,
@@ -1278,19 +1279,9 @@ mbfl_strcut(
12781279
bk = _bk;
12791280
}
12801281

1281-
position = device.pos;
1282+
decoder->illegal_mode = MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE;
12821283
(*encoder->filter_flush)(encoder);
1283-
1284-
if ((encoder->status && ((encoder->status & 0xF) || (encoder->status == 0x11))) || encoder->cache) {
1285-
illegal_substchar = (unsigned char) encoder->illegal_substchar;
1286-
while(device.pos > position) {
1287-
/* check illegal output */
1288-
if (device.buffer[position++] == illegal_substchar) {
1289-
device.pos = position - 1;
1290-
break;
1291-
}
1292-
}
1293-
}
1284+
decoder->illegal_mode = mode_backup;
12941285

12951286
if (bk.decoder.filter_dtor)
12961287
bk.decoder.filter_dtor(&bk.decoder);

0 commit comments

Comments
 (0)