Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit15ea57c

Browse files
author
Artur Zakirov
committed
Fix possible subtraction overflow
1 parent88b6bc4 commit15ea57c

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

‎rumdatapage.c

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,8 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
732732
*/
733733
findInLeafPage(btree,page,&off,&iptr,&ptr);
734734

735-
Assert(RumDataPageFreeSpacePre(page,ptr) >=0);
735+
freespace=RumDataPageFreeSpacePre(page,ptr);
736+
Assert(freespace >=0);
736737

737738
if (off <=maxoff)
738739
{
@@ -768,7 +769,8 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
768769
ptr=rumPlaceToDataPageLeaf(ptr,btree->entryAttnum,
769770
&btree->items[j],btree->addInfo[j],btree->addInfoIsNull[j],
770771
&iptr,btree->rumstate);
771-
Assert(RumDataPageFreeSpacePre(page,ptr) >=0);
772+
freespace=RumDataPageFreeSpacePre(page,ptr);
773+
Assert(freespace >=0);
772774

773775
iptr=btree->items[j];
774776
btree->curitem++;
@@ -785,7 +787,10 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
785787
ptr=rumPlaceToDataPageLeaf(ptr,btree->entryAttnum,
786788
&copy_iptr,addInfo,addInfoIsNull,
787789
&iptr,btree->rumstate);
788-
Assert(RumDataPageFreeSpacePre(page,ptr) >=0);
790+
791+
freespace=RumDataPageFreeSpacePre(page,ptr);
792+
Assert(freespace >=0);
793+
789794
iptr=copy_iptr;
790795
}
791796
}
@@ -851,6 +856,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
851856
ItemPointerDataiptr,prevIptr,maxLeftIptr;
852857
inttotalCount=0;
853858
intmaxItemIndex=btree->curitem;
859+
intfreespace;
854860

855861
staticcharlpageCopy[BLCKSZ];
856862

@@ -970,7 +976,8 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
970976
btree->addInfo[btree->curitem],
971977
btree->addInfoIsNull[btree->curitem],
972978
&prevIptr,btree->rumstate);
973-
Assert(RumDataPageFreeSpacePre(page,ptr) >=0);
979+
freespace=RumDataPageFreeSpacePre(page,ptr);
980+
Assert(freespace >=0);
974981

975982
prevIptr=btree->items[btree->curitem];
976983
btree->curitem++;
@@ -984,7 +991,8 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
984991

985992
ptr=rumPlaceToDataPageLeaf(ptr,btree->entryAttnum,&iptr,
986993
addInfo,addInfoIsNull,&prevIptr,btree->rumstate);
987-
Assert(RumDataPageFreeSpacePre(page,ptr) >=0);
994+
freespace=RumDataPageFreeSpacePre(page,ptr);
995+
Assert(freespace >=0);
988996

989997
prevIptr=iptr;
990998

@@ -1000,7 +1008,8 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
10001008
btree->addInfo[btree->curitem],
10011009
btree->addInfoIsNull[btree->curitem],
10021010
&prevIptr,btree->rumstate);
1003-
Assert(RumDataPageFreeSpacePre(page,ptr) >=0);
1011+
freespace=RumDataPageFreeSpacePre(page,ptr);
1012+
Assert(freespace >=0);
10041013

10051014
prevIptr=btree->items[btree->curitem];
10061015
btree->curitem++;

‎ruminsert.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ createPostingTree(RumState *rumstate, OffsetNumber attnum, Relation index,
4444
BlockNumberblkno;
4545
Bufferbuffer=RumNewBuffer(index);
4646
Pagepage;
47-
inti;
47+
inti,
48+
freespace;
4849
Pointerptr;
4950
ItemPointerDataprev_iptr= {{0,0},0};
5051
GenericXLogState*state;
@@ -65,7 +66,8 @@ createPostingTree(RumState *rumstate, OffsetNumber attnum, Relation index,
6566
ptr=rumPlaceToDataPageLeaf(ptr,attnum,&items[i],addInfo[i],
6667
addInfoIsNull[i],&prev_iptr,rumstate);
6768
}
68-
Assert(RumDataPageFreeSpacePre(page,ptr) >=0);
69+
freespace=RumDataPageFreeSpacePre(page,ptr);
70+
Assert(freespace >=0);
6971
updateItemIndexes(page,attnum,rumstate);
7072

7173
GenericXLogFinish(state);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp