diff options
| author | Eli Zaretskii | 2015-12-02 16:06:01 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2015-12-02 16:06:01 +0200 |
| commit | 36dbe6fc3e141e5b4c87efec5026931b89f026a5 (patch) | |
| tree | 799aeb97c74682607b3dd6ad853b26e50e2b745b /src | |
| parent | 0af2c269b1d68d114e74aa1313b2ad7d1fe21726 (diff) | |
| download | emacs-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.c | 4 |
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 | |||
| 850 | value_to_lisp (emacs_value v) | 850 | value_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 | { |