aboutsummaryrefslogtreecommitdiffstats
path: root/src/coding.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/coding.c')
-rw-r--r--src/coding.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/coding.c b/src/coding.c
index 4b70b259314..4dc4f68143f 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -3045,12 +3045,18 @@ setup_coding_system (coding_system, coding)
3045 |= CODING_REQUIRE_DECODING_MASK | CODING_REQUIRE_ENCODING_MASK; 3045 |= CODING_REQUIRE_DECODING_MASK | CODING_REQUIRE_ENCODING_MASK;
3046 { 3046 {
3047 Lisp_Object val = XVECTOR (coding_spec)->contents[4]; 3047 Lisp_Object val = XVECTOR (coding_spec)->contents[4];
3048 Lisp_Object decoder, encoder;
3049
3048 if (CONSP (val) 3050 if (CONSP (val)
3049 && VECTORP (XCONS (val)->car) 3051 && SYMBOLP (XCONS (val)->car)
3050 && VECTORP (XCONS (val)->cdr)) 3052 && !NILP (decoder = Fget (XCONS (val)->car, Qccl_program_idx))
3053 && (decoder = Fcdr (Faref (Vccl_program_table, decoder)))
3054 && SYMBOLP (XCONS (val)->cdr)
3055 && !NILP (encoder = Fget (XCONS (val)->cdr, Qccl_program_idx))
3056 && (encoder = Fcdr (Faref (Vccl_program_table, encoder))))
3051 { 3057 {
3052 setup_ccl_program (&(coding->spec.ccl.decoder), XCONS (val)->car); 3058 setup_ccl_program (&(coding->spec.ccl.decoder), decoder);
3053 setup_ccl_program (&(coding->spec.ccl.encoder), XCONS (val)->cdr); 3059 setup_ccl_program (&(coding->spec.ccl.encoder), encoder);
3054 } 3060 }
3055 else 3061 else
3056 goto label_invalid_coding_system; 3062 goto label_invalid_coding_system;