[PATCH 2/3] storage.dll16: Correctly handle block values of -1.
Zebediah Figura
z.figura12 at gmail.com
Sat Feb 11 15:56:03 CST 2017
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/storage.dll16/storage.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/dlls/storage.dll16/storage.c b/dlls/storage.dll16/storage.c
index 9fe8836..fed0d66 100644
--- a/dlls/storage.dll16/storage.c
+++ b/dlls/storage.dll16/storage.c
@@ -457,7 +457,7 @@ STORAGE_get_next_big_blocknr(stream_access16 *str,int blocknr) {
READ_HEADER(str);
- assert(blocknr>>7<sth.num_of_bbd_blocks);
+ assert(blocknr>>7 < sth.num_of_bbd_blocks);
if (sth.bbd_list[blocknr>>7]==0xffffffff)
return -5;
if (!STORAGE_get_big_block(str,sth.bbd_list[blocknr>>7],(LPBYTE)bbs))
@@ -587,7 +587,7 @@ STORAGE_get_next_small_blocknr(stream_access16 *str,int blocknr) {
TRACE("(blocknr=%d)\n", blocknr);
READ_HEADER(str);
assert(blocknr>=0);
- bigblocknr = STORAGE_get_nth_next_big_blocknr(str,sth.sbd_startblock,blocknr/128);
+ bigblocknr = STORAGE_get_nth_next_big_blocknr(str,sth.sbd_startblock,blocknr>>7);
assert(bigblocknr>=0);
ret = STORAGE_get_big_block(str,bigblocknr,block);
assert(ret);
@@ -610,9 +610,10 @@ STORAGE_get_nth_next_small_blocknr(stream_access16*str,int blocknr,int nr) {
READ_HEADER(str);
assert(blocknr>=0);
while ((nr--) && (blocknr>=0)) {
- if (lastblocknr/128!=blocknr/128) {
+ if (lastblocknr>>7 != blocknr>>7)
+ {
int bigblocknr;
- bigblocknr = STORAGE_get_nth_next_big_blocknr(str,sth.sbd_startblock,blocknr/128);
+ bigblocknr = STORAGE_get_nth_next_big_blocknr(str,sth.sbd_startblock,blocknr>>7);
assert(bigblocknr>=0);
ret = STORAGE_get_big_block(str,bigblocknr,block);
assert(ret);
@@ -806,7 +807,7 @@ STORAGE_set_big_chain(stream_access16*str,int blocknr,INT type) {
READ_HEADER(str);
assert(blocknr!=type);
while (blocknr>=0) {
- bigblocknr = sth.bbd_list[blocknr/128];
+ bigblocknr = sth.bbd_list[blocknr>>7];
assert(bigblocknr>=0);
ret = STORAGE_get_big_block(str,bigblocknr,block);
assert(ret);
@@ -840,8 +841,9 @@ STORAGE_set_small_chain(stream_access16*str,int blocknr,INT type) {
lastblocknr=-129;bigblocknr=-2;
while (blocknr>=0) {
/* cache block ... */
- if (lastblocknr/128!=blocknr/128) {
- bigblocknr = STORAGE_get_nth_next_big_blocknr(str,sth.sbd_startblock,blocknr/128);
+ if (lastblocknr>>7 != blocknr>>7)
+ {
+ bigblocknr = STORAGE_get_nth_next_big_blocknr(str,sth.sbd_startblock,blocknr>>7);
assert(bigblocknr>=0);
ret = STORAGE_get_big_block(str,bigblocknr,block);
assert(ret);
--
2.7.4
More information about the wine-patches
mailing list