aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/emacs-module.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/emacs-module.c b/src/emacs-module.c
index f9ede84ed17..b57636e54e5 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -588,13 +588,21 @@ module_set_user_finalizer (emacs_env *env, emacs_value uptr,
588} 588}
589 589
590static void 590static void
591check_vec_index (Lisp_Object lvec, ptrdiff_t i)
592{
593 CHECK_VECTOR (lvec);
594 if (! (0 <= i && i < ASIZE (lvec)))
595 args_out_of_range_3 (make_fixnum_or_float (i),
596 make_number (0), make_number (ASIZE (lvec) - 1));
597}
598
599static void
591module_vec_set (emacs_env *env, emacs_value vec, ptrdiff_t i, emacs_value val) 600module_vec_set (emacs_env *env, emacs_value vec, ptrdiff_t i, emacs_value val)
592{ 601{
593 /* FIXME: This function should return bool because it can fail. */ 602 /* FIXME: This function should return bool because it can fail. */
594 MODULE_FUNCTION_BEGIN (); 603 MODULE_FUNCTION_BEGIN ();
595 Lisp_Object lvec = value_to_lisp (vec); 604 Lisp_Object lvec = value_to_lisp (vec);
596 CHECK_VECTOR (lvec); 605 check_vec_index (lvec, i);
597 CHECK_RANGED_INTEGER (make_number (i), 0, ASIZE (lvec) - 1);
598 ASET (lvec, i, value_to_lisp (val)); 606 ASET (lvec, i, value_to_lisp (val));
599} 607}
600 608
@@ -603,8 +611,7 @@ module_vec_get (emacs_env *env, emacs_value vec, ptrdiff_t i)
603{ 611{
604 MODULE_FUNCTION_BEGIN (module_nil); 612 MODULE_FUNCTION_BEGIN (module_nil);
605 Lisp_Object lvec = value_to_lisp (vec); 613 Lisp_Object lvec = value_to_lisp (vec);
606 CHECK_VECTOR (lvec); 614 check_vec_index (lvec, i);
607 CHECK_RANGED_INTEGER (make_number (i), 0, ASIZE (lvec) - 1);
608 return lisp_to_value (AREF (lvec, i)); 615 return lisp_to_value (AREF (lvec, i));
609} 616}
610 617