[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