summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/coding.c21
2 files changed, 24 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index bb8ef04bc67..95cec4f1f14 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-09 Kenichi Handa <handa@etlken2>
+
+ * coding.c (decode_coding_emacs_mule): Handle insufficent source
+ correctly.
+
2004-03-04 Richard M. Stallman <rms@gnu.org>
* s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS): New definition.
diff --git a/src/coding.c b/src/coding.c
index 62c761c5bcf..76ef3026a2d 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -1024,9 +1024,26 @@ decode_coding_emacs_mule (coding, source, destination, src_bytes, dst_bytes)
}
else
{
- bytes = CHAR_STRING (*src, tmp);
- p = tmp;
+ int i, c;
+
+ bytes = BYTES_BY_CHAR_HEAD (*src);
src++;
+ for (i = 1; i < bytes; i++)
+ {
+ ONE_MORE_BYTE (c);
+ if (CHAR_HEAD_P (c))
+ break;
+ }
+ if (i < bytes)
+ {
+ bytes = CHAR_STRING (*src_base, tmp);
+ p = tmp;
+ src = src_base + 1;
+ }
+ else
+ {
+ p = src_base;
+ }
}
if (dst + bytes >= (dst_bytes ? dst_end : src))
{