Core/AuctionHouse: Fix overflow in item ordering.
Port From (https://github.com/TrinityCore/TrinityCore/commit/c0f5f7d4ef4253826d3be5882ebdcf7f463cce5a)
This commit is contained in:
@@ -1735,7 +1735,7 @@ namespace Game
|
|||||||
{
|
{
|
||||||
for (var i = 0; i < _sortCount; ++i)
|
for (var i = 0; i < _sortCount; ++i)
|
||||||
{
|
{
|
||||||
int ordering = CompareColumns(_sorts[i].SortOrder, left, right);
|
long ordering = CompareColumns(_sorts[i].SortOrder, left, right);
|
||||||
if (ordering != 0)
|
if (ordering != 0)
|
||||||
return (ordering < 0).CompareTo(!_sorts[i].ReverseSort);
|
return (ordering < 0).CompareTo(!_sorts[i].ReverseSort);
|
||||||
}
|
}
|
||||||
@@ -1747,7 +1747,7 @@ namespace Game
|
|||||||
return left.Id.CompareTo(right.Id);
|
return left.Id.CompareTo(right.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CompareColumns(AuctionHouseSortOrder column, AuctionPosting left, AuctionPosting right)
|
long CompareColumns(AuctionHouseSortOrder column, AuctionPosting left, AuctionPosting right)
|
||||||
{
|
{
|
||||||
switch (column)
|
switch (column)
|
||||||
{
|
{
|
||||||
@@ -1755,7 +1755,7 @@ namespace Game
|
|||||||
{
|
{
|
||||||
ulong leftPrice = left.BuyoutOrUnitPrice != 0 ? left.BuyoutOrUnitPrice : (left.BidAmount != 0 ? left.BidAmount : left.MinBid);
|
ulong leftPrice = left.BuyoutOrUnitPrice != 0 ? left.BuyoutOrUnitPrice : (left.BidAmount != 0 ? left.BidAmount : left.MinBid);
|
||||||
ulong rightPrice = right.BuyoutOrUnitPrice != 0 ? right.BuyoutOrUnitPrice : (right.BidAmount != 0 ? right.BidAmount : right.MinBid);
|
ulong rightPrice = right.BuyoutOrUnitPrice != 0 ? right.BuyoutOrUnitPrice : (right.BidAmount != 0 ? right.BidAmount : right.MinBid);
|
||||||
return (int)(leftPrice - rightPrice);
|
return (long)(leftPrice - rightPrice);
|
||||||
}
|
}
|
||||||
case AuctionHouseSortOrder.Name:
|
case AuctionHouseSortOrder.Name:
|
||||||
return left.Bucket.FullName[(int)_locale].CompareTo(right.Bucket.FullName[(int)_locale]);
|
return left.Bucket.FullName[(int)_locale].CompareTo(right.Bucket.FullName[(int)_locale]);
|
||||||
@@ -1766,9 +1766,9 @@ namespace Game
|
|||||||
return leftLevel - rightLevel;
|
return leftLevel - rightLevel;
|
||||||
}
|
}
|
||||||
case AuctionHouseSortOrder.Bid:
|
case AuctionHouseSortOrder.Bid:
|
||||||
return (int)(left.BidAmount - right.BidAmount);
|
return (long)(left.BidAmount - right.BidAmount);
|
||||||
case AuctionHouseSortOrder.Buyout:
|
case AuctionHouseSortOrder.Buyout:
|
||||||
return (int)(left.BuyoutOrUnitPrice - right.BuyoutOrUnitPrice);
|
return (long)(left.BuyoutOrUnitPrice - right.BuyoutOrUnitPrice);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1858,7 +1858,7 @@ namespace Game
|
|||||||
{
|
{
|
||||||
for (var i = 0; i < _sortCount; ++i)
|
for (var i = 0; i < _sortCount; ++i)
|
||||||
{
|
{
|
||||||
int ordering = CompareColumns(_sorts[i].SortOrder, left, right);
|
long ordering = CompareColumns(_sorts[i].SortOrder, left, right);
|
||||||
if (ordering != 0)
|
if (ordering != 0)
|
||||||
return (ordering < 0).CompareTo(!_sorts[i].ReverseSort);
|
return (ordering < 0).CompareTo(!_sorts[i].ReverseSort);
|
||||||
}
|
}
|
||||||
@@ -1866,14 +1866,14 @@ namespace Game
|
|||||||
return left.Key != right.Key ? 1 : 0;
|
return left.Key != right.Key ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CompareColumns(AuctionHouseSortOrder column, AuctionsBucketData left, AuctionsBucketData right)
|
long CompareColumns(AuctionHouseSortOrder column, AuctionsBucketData left, AuctionsBucketData right)
|
||||||
{
|
{
|
||||||
switch (column)
|
switch (column)
|
||||||
{
|
{
|
||||||
case AuctionHouseSortOrder.Price:
|
case AuctionHouseSortOrder.Price:
|
||||||
case AuctionHouseSortOrder.Bid:
|
case AuctionHouseSortOrder.Bid:
|
||||||
case AuctionHouseSortOrder.Buyout:
|
case AuctionHouseSortOrder.Buyout:
|
||||||
return (int)((long)left.MinPrice - (long)right.MinPrice);
|
return (long)(left.MinPrice - right.MinPrice);
|
||||||
case AuctionHouseSortOrder.Name:
|
case AuctionHouseSortOrder.Name:
|
||||||
return left.FullName[(int)_locale].CompareTo(right.FullName[(int)_locale]);
|
return left.FullName[(int)_locale].CompareTo(right.FullName[(int)_locale]);
|
||||||
case AuctionHouseSortOrder.Level:
|
case AuctionHouseSortOrder.Level:
|
||||||
|
|||||||
Reference in New Issue
Block a user