summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2011-11-07 10:57:07 +0900
committerKenichi Handa <handa@m17n.org>2011-11-07 10:57:07 +0900
commita0241d014e3d762bc7818d6cd8fd7c90bab3c538 (patch)
treea14ae98ada4e3490fecf36539f30ff4afb0ae8f8
parent56c31147dce7a3b3c40792be5b115a2e6dbcfe1d (diff)
downloademacs-a0241d014e3d762bc7818d6cd8fd7c90bab3c538.tar.gz
Set members of the struct coding_system before accessing them (bug#9910,9911,9912).
-rw-r--r--src/ChangeLog11
-rw-r--r--src/callproc.c1
-rw-r--r--src/coding.c2
-rw-r--r--src/process.c1
4 files changed, 14 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index f198f37d0c1..3af9590134c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,14 @@
+2011-11-07 Kenichi Handa <handa@m17n.org>
+
+ * coding.c (coding_set_destination): Check coding->src_pos only
+ when coding->src_object is a buffer (bug#9910).
+
+ * process.c (send_process): Set the member src_multibyte of coding
+ to 0 (bug#9911) when sending a unibyte text.
+
+ * callproc.c (Fcall_process): Set the member src_multibyte of
+ process_coding to 0 (bug#9912).
+
2011-11-03 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (note_mouse_highlight): Initialize `area'. (Bug#9947)
diff --git a/src/callproc.c b/src/callproc.c
index 97531f73848..0859aaef2e6 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -748,6 +748,7 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
val = raw_text_coding_system (val);
setup_coding_system (val, &process_coding);
}
+ process_coding.src_multibyte = 0;
immediate_quit = 1;
QUIT;
diff --git a/src/coding.c b/src/coding.c
index 5fd59d394d9..79908e9b29b 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -1043,7 +1043,7 @@ coding_set_destination (struct coding_system *coding)
{
if (BUFFERP (coding->dst_object))
{
- if (coding->src_pos < 0)
+ if (BUFFERP (coding->src_object) && coding->src_pos < 0)
{
coding->destination = BEG_ADDR + coding->dst_pos_byte - BEG_BYTE;
coding->dst_bytes = (GAP_END_ADDR
diff --git a/src/process.c b/src/process.c
index c316139a713..301274676d6 100644
--- a/src/process.c
+++ b/src/process.c
@@ -5387,6 +5387,7 @@ send_process (volatile Lisp_Object proc, const char *volatile buf,
}
else
{
+ coding->src_multibyte = 0;
/* For sending a unibyte text, character code conversion should
not take place but EOL conversion should. So, setup raw-text
or one of the subsidiary if we have not yet done it. */