@@ -38,6 +38,8 @@ static const char *mbfl_encoding_ucs4_aliases[] = {"ISO-10646-UCS-4", "UCS4", NU
38
38
static const char * mbfl_encoding_ucs4be_aliases [] = {"byte4be" , NULL };
39
39
static const char * mbfl_encoding_ucs4le_aliases [] = {"byte4le" , NULL };
40
40
41
+ static int mbfl_filt_conv_ucs4_wchar_flush (mbfl_convert_filter * filter );
42
+
41
43
const mbfl_encoding mbfl_encoding_ucs4 = {
42
44
mbfl_no_encoding_ucs4 ,
43
45
"UCS-4" ,
@@ -77,7 +79,7 @@ const struct mbfl_convert_vtbl vtbl_ucs4_wchar = {
77
79
mbfl_filt_conv_common_ctor ,
78
80
NULL ,
79
81
mbfl_filt_conv_ucs4_wchar ,
80
- mbfl_filt_conv_common_flush ,
82
+ mbfl_filt_conv_ucs4_wchar_flush ,
81
83
NULL ,
82
84
};
83
85
@@ -97,7 +99,7 @@ const struct mbfl_convert_vtbl vtbl_ucs4be_wchar = {
97
99
mbfl_filt_conv_common_ctor ,
98
100
NULL ,
99
101
mbfl_filt_conv_ucs4be_wchar ,
100
- mbfl_filt_conv_common_flush ,
102
+ mbfl_filt_conv_ucs4_wchar_flush ,
101
103
NULL ,
102
104
};
103
105
@@ -117,7 +119,7 @@ const struct mbfl_convert_vtbl vtbl_ucs4le_wchar = {
117
119
mbfl_filt_conv_common_ctor ,
118
120
NULL ,
119
121
mbfl_filt_conv_ucs4le_wchar ,
120
- mbfl_filt_conv_common_flush ,
122
+ mbfl_filt_conv_ucs4_wchar_flush ,
121
123
NULL ,
122
124
};
123
125
@@ -281,3 +283,17 @@ int mbfl_filt_conv_wchar_ucs4le(int c, mbfl_convert_filter *filter)
281
283
282
284
return c ;
283
285
}
286
+
287
+ static int mbfl_filt_conv_ucs4_wchar_flush (mbfl_convert_filter * filter )
288
+ {
289
+ if (filter -> status & 0xF ) {
290
+ /* Input string was truncated */
291
+ CK ((* filter -> output_function )(filter -> cache | MBFL_WCSGROUP_THROUGH , filter -> data ));
292
+ }
293
+
294
+ if (filter -> flush_function ) {
295
+ (* filter -> flush_function )(filter -> data );
296
+ }
297
+
298
+ return 0 ;
299
+ }
0 commit comments