diff options
-rw-r--r-- | modules/mod-test/test.el | 7 | ||||
-rw-r--r-- | src/emacs-module.c | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/modules/mod-test/test.el b/modules/mod-test/test.el index eacc6671ead..ad4cc49c690 100644 --- a/modules/mod-test/test.el +++ b/modules/mod-test/test.el @@ -43,10 +43,15 @@ (should (= (nth 2 descr) 3))) (should-error (mod-test-sum "1" 2) :type 'wrong-type-argument) (should-error (mod-test-sum 1 "2") :type 'wrong-type-argument) + ;; The following tests are for 32-bit build --with-wide-int. (should (= (mod-test-sum -1 most-positive-fixnum) (1- most-positive-fixnum))) (should (= (mod-test-sum 1 most-negative-fixnum) - (1+ most-negative-fixnum)))) + (1+ most-negative-fixnum))) + (should (= (mod-test-sum 1 #x1fffffff) + (1+ #x1fffffff))) + (should (= (mod-test-sum -1 #x20000000) + #x1fffffff))) (ert-deftest mod-test-sum-docstring () (should (string= (documentation 'mod-test-sum) "Return A + B"))) diff --git a/src/emacs-module.c b/src/emacs-module.c index 13f2a1dd98f..22fee7e4860 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c @@ -850,8 +850,8 @@ static Lisp_Object value_to_lisp (emacs_value v) { #ifdef WIDE_EMACS_INT - ptrdiff_t tmp = (ptrdiff_t)v; - int tag = tmp & ((1 << GCTYPEBITS) - 1); + uintptr_t tmp = (uintptr_t)v; + unsigned tag = tmp & ((1 << GCTYPEBITS) - 1); Lisp_Object o; switch (tag) { |