+ Lisp_Object map, ret;
+
+ if ( CODING_SYSTEM_ENABLE_DECOMPOSITION (str->codesys) )
+ {
+ Lisp_Object rest = Vdecomposition_feature_list;
+ Lisp_Object decomp_f;
+ Lisp_Object seq = Qnil;
+ struct gcpro gcpro1;
+
+ while ( CONSP (rest) )
+ {
+ decomp_f = XCAR (rest);
+ GCPRO1 (rest);
+ seq = Fchar_feature (make_char (ch), decomp_f, Qnil,
+ Qnil, Qnil);
+ UNGCPRO;
+ if ( !NILP (seq) )
+ break;
+ rest = XCDR (rest);
+ }
+
+ if ( CONSP (seq) )
+ {
+ Lisp_Object base = Fcar (seq);
+
+ seq = Fcdr (seq);
+ if ( CHARP (base) && CONSP (seq) )
+ {
+ Lisp_Object comb = Fcar (seq);