mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-11 11:10:49 +00:00
Change Big Endian backup implementations to use signed indexes
load64() counted down from 7..0, but the decrement turned 0 into 255. This means the loop would never terminate on Big Endian systems. Just use signed char integers since we're only dealing with values from 0..7 anyway. Closes https://bugs.php.net/bug.php?id=73282
This commit is contained in:
1 parent
6ddfce116b
commit
b041bebb88
1 file changed
+3
-3
@@ -38,7 +38,7 @@ static inline unsigned char idx(unsigned char x, unsigned char y) {
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
static inline uint64_t load64(const unsigned char* x) {
|
||||
unsigned char i;
|
||||
char i;
|
||||
uint64_t ret = 0;
|
||||
for (i = 7; i >= 0; --i) {
|
||||
ret <<= 8;
|
||||
@@ -47,14 +47,14 @@ static inline uint64_t load64(const unsigned char* x) {
|
||||
return ret;
|
||||
}
|
||||
static inline void store64(unsigned char* x, uint64_t val) {
|
||||
unsigned char i;
|
||||
char i;
|
||||
for (i = 0; i < 8; ++i) {
|
||||
x[i] = val & 0xFF;
|
||||
val >>= 8;
|
||||
}
|
||||
}
|
||||
static inline void xor64(unsigned char* x, uint64_t val) {
|
||||
unsigned char i;
|
||||
char i;
|
||||
for (i = 0; i < 8; ++i) {
|
||||
x[i] ^= val & 0xFF;
|
||||
val >>= 8;
|
||||
|
||||
Reference in new issue
Block a user