diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2019-01-24 07:13:03 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2019-01-24 07:13:03 -0800 |
commit | 2bc30dec3b2c43145afdbb199341fc023733189d (patch) | |
tree | 332e0302126e6673550485cc08726cdd8105ef9f | |
parent | 90e81a3acfd68e166c313656c98a24dd9aa4d18e (diff) | |
download | txr-2bc30dec3b2c43145afdbb199341fc023733189d.tar.gz txr-2bc30dec3b2c43145afdbb199341fc023733189d.tar.bz2 txr-2bc30dec3b2c43145afdbb199341fc023733189d.zip |
ffi: incorrect big endian int64 get.
* ffi.c (ffi_le_i64_get): Fix wrong array indices, causing
lower half of 64 bit word to be taken as the upper half.
-rw-r--r-- | ffi.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1087,8 +1087,8 @@ static val ffi_le_i64_get(struct txr_ffi_type *tft, mem_t *src, val self) n = -((n ^ 0xFFFFFFFFFFFFFFFF) + 1); return num(n); #else - cnum hi32 = (convert(cnum, src[3]) << 24 | convert(cnum, src[2]) << 16 | - convert(cnum, src[1]) << 8 | src[0]); + cnum hi32 = (convert(cnum, src[7]) << 24 | convert(cnum, src[6]) << 16 | + convert(cnum, src[5]) << 8 | src[4]); ucnum lo32 = (convert(ucnum, src[3]) << 24 | convert(ucnum, src[2]) << 16 | convert(ucnum, src[1]) << 8 | src[0]); return logior(ash(num(hi32), num_fast(32)), unum(lo32)); |