Mercurial > emacs
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". |
