Compare commits
2 Commits
win-2.8.24
...
win-2.8.24
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c80eaf1abf | ||
|
|
fab34af288 |
@@ -1,5 +1,9 @@
|
||||
MSOpenTech Redis on Windows 2.8 Release Notes
|
||||
=============================================
|
||||
--[ Redis on Windows 2.8.2402 ] Release date: Jun 21 2016
|
||||
|
||||
- [Fix] Possible AV during background save.
|
||||
|
||||
--[ Redis on Windows 2.8.2401 ] Release date: Jun 21 2016
|
||||
|
||||
- [PR] Fixed pointer overflow crash when using bgsave under rare circumstances.
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<Product Id="*"
|
||||
Name="Redis on Windows"
|
||||
Language="1033"
|
||||
Version="2.8.2401"
|
||||
Version="2.8.2402"
|
||||
Manufacturer="MSOpenTech"
|
||||
UpgradeCode="{05410198-7212-4FC4-B7C8-AFEFC3DA0FBC}">
|
||||
<Package InstallerVersion="200"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<metadata>
|
||||
<id>redis-64</id>
|
||||
<title>Redis 64-bit</title>
|
||||
<version>2.8.2401</version>
|
||||
<version>2.8.2402</version>
|
||||
<authors>Alexis Campailla, Enrico Giordani, Jonathan Pickett</authors>
|
||||
<owners>Microsoft Open Technologies, Inc.</owners>
|
||||
<description>A porting of Redis on Windows 64-bit.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<metadata>
|
||||
<id>redis-64</id>
|
||||
<title>Redis 64-bit</title>
|
||||
<version>2.8.2401</version>
|
||||
<version>2.8.2402</version>
|
||||
<authors>Alexis Campailla, Enrico Giordani, Jonathan Pickett</authors>
|
||||
<owners>Microsoft Open Technologies, Inc.</owners>
|
||||
<description>A porting of Redis on Windows 64-bit.
|
||||
|
||||
@@ -30,20 +30,13 @@ namespace Globals
|
||||
/* This function is used to force the VEH on the entire size of the buffer length,
|
||||
in the event that the buffer crosses the memory page boundaries */
|
||||
void EnsureMemoryIsMapped(const void *buffer, size_t size) {
|
||||
/* Use 'volatile' to make sure the compiler doesn't remove "c = *((char*) (p + offset));" */
|
||||
volatile char c;
|
||||
char* p = (char*) buffer;
|
||||
char* pStart = p - ((size_t) p % Globals::pageSize);
|
||||
char* pEnd = p + size;
|
||||
if ((size_t) (pEnd - pStart) > Globals::pageSize) {
|
||||
size_t offset = 0;
|
||||
while (offset < size) {
|
||||
offset += Globals::pageSize;
|
||||
if (offset > size) {
|
||||
offset = size;
|
||||
}
|
||||
c = *((char*) (p + offset));
|
||||
}
|
||||
char* pFirstByte = (char*) buffer;
|
||||
char* pLastByte = (char*) buffer + size - 1;
|
||||
char* pFirstPage = pFirstByte - ((size_t) pFirstByte % Globals::pageSize);
|
||||
char* pLastPage = pLastByte - ((size_t) pLastByte % Globals::pageSize);
|
||||
// Use 'volatile' to make sure the compiler doesn't remove the memory access
|
||||
for (volatile char* p = pFirstPage; p <= pLastPage; p += Globals::pageSize) {
|
||||
volatile char c = *p;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
#define REDIS_VERSION "2.8.2401"
|
||||
#define REDIS_VERSION "2.8.2402"
|
||||
|
||||
Reference in New Issue
Block a user