comparison src/coding.c @ 95344:02f76f79f115

(encode_coding_raw_text): Set coding->produced_char for all branches. Compute it differently.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 27 May 2008 15:49:49 +0000
parents 524350e4961c
children 0350e5efb8f7
comparison
equal deleted inserted replaced
95343:6ea8f16fb374 95344:02f76f79f115
4816 int multibytep = coding->dst_multibyte; 4816 int multibytep = coding->dst_multibyte;
4817 int *charbuf = coding->charbuf; 4817 int *charbuf = coding->charbuf;
4818 int *charbuf_end = coding->charbuf + coding->charbuf_used; 4818 int *charbuf_end = coding->charbuf + coding->charbuf_used;
4819 unsigned char *dst = coding->destination + coding->produced; 4819 unsigned char *dst = coding->destination + coding->produced;
4820 unsigned char *dst_end = coding->destination + coding->dst_bytes; 4820 unsigned char *dst_end = coding->destination + coding->dst_bytes;
4821 int produced_chars = 0;
4822 int c; 4821 int c;
4823 4822
4824 if (multibytep) 4823 if (multibytep)
4825 { 4824 {
4826 int safe_room = MAX_MULTIBYTE_LENGTH * 2; 4825 int safe_room = MAX_MULTIBYTE_LENGTH * 2;
4871 *dst++ = c; 4870 *dst++ = c;
4872 else if (CHAR_BYTE8_P (c)) 4871 else if (CHAR_BYTE8_P (c))
4873 *dst++ = CHAR_TO_BYTE8 (c); 4872 *dst++ = CHAR_TO_BYTE8 (c);
4874 else 4873 else
4875 CHAR_STRING_ADVANCE (c, dst); 4874 CHAR_STRING_ADVANCE (c, dst);
4876 produced_chars++;
4877 } 4875 }
4878 } 4876 }
4879 else 4877 else
4880 { 4878 {
4881 ASSURE_DESTINATION (charbuf_end - charbuf); 4879 ASSURE_DESTINATION (charbuf_end - charbuf);
4882 while (charbuf < charbuf_end && dst < dst_end) 4880 while (charbuf < charbuf_end && dst < dst_end)
4883 *dst++ = *charbuf++; 4881 *dst++ = *charbuf++;
4884 produced_chars = dst - (coding->destination + coding->dst_bytes);
4885 } 4882 }
4886 } 4883 }
4887 record_conversion_result (coding, CODING_RESULT_SUCCESS); 4884 record_conversion_result (coding, CODING_RESULT_SUCCESS);
4888 coding->produced_char += produced_chars; 4885 coding->produced_char += charbuf - coding->charbuf;
4889 coding->produced = dst - coding->destination; 4886 coding->produced = dst - coding->destination;
4890 return 0; 4887 return 0;
4891 } 4888 }
4892 4889
4893 /* See the above "GENERAL NOTES on `detect_coding_XXX ()' functions". 4890 /* See the above "GENERAL NOTES on `detect_coding_XXX ()' functions".