aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2015-12-02 16:06:01 +0200
committerEli Zaretskii2015-12-02 16:06:01 +0200
commit36dbe6fc3e141e5b4c87efec5026931b89f026a5 (patch)
tree799aeb97c74682607b3dd6ad853b26e50e2b745b /src
parent0af2c269b1d68d114e74aa1313b2ad7d1fe21726 (diff)
downloademacs-36dbe6fc3e141e5b4c87efec5026931b89f026a5.tar.gz
emacs-36dbe6fc3e141e5b4c87efec5026931b89f026a5.zip
More emacs-module.c fixes for wide ints
* src/emacs-module.c (value_to_lisp) [WIDE_EMACS_INT]: Use unsigned data types to manipulate pointers, to avoid sign extension coming after us with a vengeance. * modules/mod-test/test.el (mod-test-sum-test): Add tests for Emacs with wide ints that verify integer values near the critical value that requires us to switch to a cons cell.
Diffstat (limited to 'src')
-rw-r--r--src/emacs-module.c4
1 files changed, 2 insertions, 2 deletions
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
850value_to_lisp (emacs_value v) 850value_to_lisp (emacs_value v)
851{ 851{
852#ifdef WIDE_EMACS_INT 852#ifdef WIDE_EMACS_INT
853 ptrdiff_t tmp = (ptrdiff_t)v; 853 uintptr_t tmp = (uintptr_t)v;
854 int tag = tmp & ((1 << GCTYPEBITS) - 1); 854 unsigned tag = tmp & ((1 << GCTYPEBITS) - 1);
855 Lisp_Object o; 855 Lisp_Object o;
856 switch (tag) 856 switch (tag)
857 { 857 {