# HG changeset patch # User Kenichi Handa # Date 958781228 0 # Node ID 3eec558de0ef14b278d751210d2c22e323955078 # Parent be2769eac1a5ff4875233f97a151dabad0aa1cde (Fw32_set_clipboard_data): Setup members src_multibyte and dst_multibyte of coding. Adjusted for the change for find_charset_in_str. (Fw32_get_clipboard_data): Likewise. diff -r be2769eac1a5 -r 3eec558de0ef src/w32select.c --- a/src/w32select.c Sat May 20 00:06:41 2000 +0000 +++ b/src/w32select.c Sat May 20 00:07:08 2000 +0000 @@ -126,17 +126,10 @@ { /* Since we are now handling multilingual text, we must consider encoding text for the clipboard. */ - int charsets[MAX_CHARSET + 1]; - int num; + int charset_info = find_charset_in_text (src, XSTRING (string)->size, + nbytes, NULL, QNil); - bzero (charsets, (MAX_CHARSET + 1) * sizeof (int)); - num = ((nbytes <= 1 /* Check the possibility of short cut. */ - || !STRING_MULTIBYTE (string) - || nbytes == XSTRING (string)->size) - ? 0 - : find_charset_in_str (src, nbytes, charsets, Qnil, 1)); - - if (!num || (num == 1 && charsets[CHARSET_ASCII])) + if (charset_info == 0) { /* No multibyte character in OBJ. We need not encode it. */ @@ -192,6 +185,8 @@ Vnext_selection_coding_system = Vselection_coding_system; setup_coding_system (Fcheck_coding_system (Vnext_selection_coding_system), &coding); + coding.src_multibyte = 1; + coding.dst_multibyte = 0; Vnext_selection_coding_system = Qnil; coding.mode |= CODING_MODE_LAST_BLOCK; bufsize = encoding_buffer_size (&coding, nbytes); @@ -291,16 +286,16 @@ Vnext_selection_coding_system = Vselection_coding_system; setup_coding_system (Fcheck_coding_system (Vnext_selection_coding_system), &coding); + coding.src_multibyte = 0; + coding.dst_multibyte = 1; Vnext_selection_coding_system = Qnil; coding.mode |= CODING_MODE_LAST_BLOCK; bufsize = decoding_buffer_size (&coding, nbytes); buf = (unsigned char *) xmalloc (bufsize); decode_coding (&coding, src, buf, nbytes, bufsize); Vlast_coding_system_used = coding.symbol; - truelen = (coding.fake_multibyte - ? multibyte_chars_in_text (buf, coding.produced) - : coding.produced_char); - ret = make_string_from_bytes ((char *) buf, truelen, coding.produced); + ret = make_string_from_bytes ((char *) buf, + coding.produced_char, coding.produced); xfree (buf); } else