fix endless loop bug

This commit is contained in:
MaysWind 2016-07-04 22:57:05 +08:00
parent c9e6601607
commit 701d945371

View file

@ -132,6 +132,10 @@
var getPieceStatus = function (bitField, pieceCount) {
var pieces = [];
for (var i = 0; i < pieceCount; i++) {
pieces.push(false);
}
if (!bitField) {
return pieces;
}
@ -145,8 +149,7 @@
var bit = (1 << (4 - j));
var isCompleted = (bitSet & bit) == bit;
pieces.push(isCompleted);
pieceIndex++;
pieces[pieceIndex++] = isCompleted;
if (pieceIndex >= pieceCount) {
return pieces;
@ -483,7 +486,7 @@
return getCombinedPieces(bitField, pieceCount);
},
estimateHealthPercentFromPeers: function (task, peers) {
if (peers.length < 1) {
if (!task || task.numPieces < 1 || peers.length < 1) {
return task.completePercent;
}
@ -519,20 +522,22 @@
var totalCompletedPieceCount = 0;
while (true) {
var completed = true;
if (totalPieces.length > 0) {
while (true) {
var completed = true;
for (var i = 0; i < totalPieces.length; i++) {
if (totalPieces[i] > 0) {
totalCompletedPieceCount++;
totalPieces[i]--;
} else {
completed = false;
for (var i = 0; i < totalPieces.length; i++) {
if (totalPieces[i] > 0) {
totalCompletedPieceCount++;
totalPieces[i]--;
} else {
completed = false;
}
}
}
if (!completed) {
break;
if (!completed) {
break;
}
}
}