Index: third_party/sqlite/src/ext/misc/ieee754.c |
diff --git a/third_party/sqlite/src/ext/misc/ieee754.c b/third_party/sqlite/src/ext/misc/ieee754.c |
index f1438938857723b53d32b2ce14ce31c62310efd9..20c5e6143347ca712183145a3ea7f23a4288fc72 100644 |
--- a/third_party/sqlite/src/ext/misc/ieee754.c |
+++ b/third_party/sqlite/src/ext/misc/ieee754.c |
@@ -94,16 +94,16 @@ static void ieee754func( |
m >>= 1; |
e++; |
} |
- while( ((m>>32)&0xfff00000)==0 ){ |
+ while( m!=0 && ((m>>32)&0xfff00000)==0 ){ |
m <<= 1; |
e--; |
} |
e += 1075; |
if( e<0 ) e = m = 0; |
- if( e>0x7ff ) m = 0; |
+ if( e>0x7ff ) e = 0x7ff; |
a = m & ((((sqlite3_int64)1)<<52)-1); |
a |= e<<52; |
- if( isNeg ) a |= ((sqlite3_int64)1)<<63; |
+ if( isNeg ) a |= ((sqlite3_uint64)1)<<63; |
memcpy(&r, &a, sizeof(r)); |
sqlite3_result_double(context, r); |
} |