aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2017-06-04 23:52:10 -0700
committerPaul Eggert2017-06-04 23:53:47 -0700
commit620d65370afd319b706cea0eccffd0ee0ffd2e26 (patch)
tree7f2f83a3946f489647e29e7c3d3a93b59773a86f
parentcef90102cb0366f26a9cf618497793d223d60a66 (diff)
downloademacs-620d65370afd319b706cea0eccffd0ee0ffd2e26.tar.gz
emacs-620d65370afd319b706cea0eccffd0ee0ffd2e26.zip
Remove unnecessary checking in emacs-module.c
* src/emacs-module.c (module_copy_string_contents): Remove checking, as string lengths are always nonnegative and less than STRING_BYTES_BOUND, and this is checked elsewhere. (module_make_string): Check length against STRING_BYTES_BOUND, a tighter bound than MOST_POSITIVE_FIXNUM. (funcall_module): Don't assume that an out-of-range integer is nonnegative.
-rw-r--r--src/emacs-module.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/emacs-module.c b/src/emacs-module.c
index f173bf93934..56105123ff4 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -492,10 +492,7 @@ module_copy_string_contents (emacs_env *env, emacs_value value, char *buffer,
492 492
493 Lisp_Object lisp_str_utf8 = ENCODE_UTF_8 (lisp_str); 493 Lisp_Object lisp_str_utf8 = ENCODE_UTF_8 (lisp_str);
494 ptrdiff_t raw_size = SBYTES (lisp_str_utf8); 494 ptrdiff_t raw_size = SBYTES (lisp_str_utf8);
495 ptrdiff_t required_buf_size; 495 ptrdiff_t required_buf_size = raw_size + 1;
496 if (INT_ADD_WRAPV (raw_size, 1, &required_buf_size))
497 xsignal0 (Qoverflow_error);
498 eassert (required_buf_size > 0);
499 496
500 eassert (length != NULL); 497 eassert (length != NULL);
501 498
@@ -523,7 +520,7 @@ module_make_string (emacs_env *env, const char *str, ptrdiff_t length)
523{ 520{
524 MODULE_FUNCTION_BEGIN (module_nil); 521 MODULE_FUNCTION_BEGIN (module_nil);
525 eassert (str != NULL); 522 eassert (str != NULL);
526 if (length < 0 || length > MOST_POSITIVE_FIXNUM) 523 if (! (0 <= length && length <= STRING_BYTES_BOUND))
527 xsignal0 (Qoverflow_error); 524 xsignal0 (Qoverflow_error);
528 AUTO_STRING_WITH_LEN (lstr, str, length); 525 AUTO_STRING_WITH_LEN (lstr, str, length);
529 return lisp_to_value (code_convert_string_norecord (lstr, Qutf_8, false)); 526 return lisp_to_value (code_convert_string_norecord (lstr, Qutf_8, false));
@@ -675,7 +672,7 @@ funcall_module (Lisp_Object function, ptrdiff_t nargs, Lisp_Object *arglist)
675 eassume (0 <= func->min_arity); 672 eassume (0 <= func->min_arity);
676 if (! (func->min_arity <= nargs 673 if (! (func->min_arity <= nargs
677 && (func->max_arity < 0 || nargs <= func->max_arity))) 674 && (func->max_arity < 0 || nargs <= func->max_arity)))
678 xsignal2 (Qwrong_number_of_arguments, function, make_natnum (nargs)); 675 xsignal2 (Qwrong_number_of_arguments, function, make_number (nargs));
679 676
680 emacs_env pub; 677 emacs_env pub;
681 struct emacs_env_private priv; 678 struct emacs_env_private priv;