geforkt von Mirrors/Paper
9ff01b16ab
This will be used by my next commit. But trying to get the build going since CI blew up
92 Zeilen
4.9 KiB
Diff
92 Zeilen
4.9 KiB
Diff
From f7eb7e7f48789ec63ed17a648a7086f730e58cdc Mon Sep 17 00:00:00 2001
|
|
From: DemonWav <demonwav@gmail.com>
|
|
Date: Sat, 26 Mar 2016 21:36:05 -0500
|
|
Subject: [PATCH] Prevent possible infinite loop in BlockPosition iterator
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
|
|
index 2d56f02..b87c4c6 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockPosition.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
|
|
@@ -139,15 +139,17 @@ public class BlockPosition extends BaseBlockPosition {
|
|
|
|
protected BlockPosition a() {
|
|
if (this.b == null) {
|
|
- this.b = blockposition;
|
|
+ this.b = blockposition2; // Paper - use blockposition2 instead of blockposition to prevent infinite loops
|
|
return this.b;
|
|
- } else if (this.b.equals(blockposition1)) {
|
|
+ } else if (this.b.equals(blockposition3)) { // Paper - use blockposition3 instead of blockposition1 to prevent infinite loops
|
|
return (BlockPosition) this.endOfData();
|
|
} else {
|
|
int i = this.b.getX();
|
|
int j = this.b.getY();
|
|
int k = this.b.getZ();
|
|
|
|
+ // Paper start - use blockposition2 and blockposition3 to prevent infinite loops
|
|
+ /*
|
|
if (i < blockposition1.getX()) {
|
|
++i;
|
|
} else if (j < blockposition1.getY()) {
|
|
@@ -158,6 +160,18 @@ public class BlockPosition extends BaseBlockPosition {
|
|
j = blockposition.getY();
|
|
++k;
|
|
}
|
|
+ */
|
|
+ if (i < blockposition3.getX()) {
|
|
+ ++i;
|
|
+ } else if (j < blockposition3.getY()) {
|
|
+ i = blockposition2.getX();
|
|
+ ++j;
|
|
+ } else if (k < blockposition3.getZ()) {
|
|
+ i = blockposition2.getX();
|
|
+ j = blockposition2.getY();
|
|
+ ++k;
|
|
+ }
|
|
+ // Paper end
|
|
|
|
this.b = new BlockPosition(i, j, k);
|
|
return this.b;
|
|
@@ -187,15 +201,17 @@ public class BlockPosition extends BaseBlockPosition {
|
|
|
|
protected BlockPosition.MutableBlockPosition a() {
|
|
if (this.b == null) {
|
|
- this.b = new BlockPosition.MutableBlockPosition(blockposition.getX(), blockposition.getY(), blockposition.getZ());
|
|
+ this.b = new BlockPosition.MutableBlockPosition(blockposition2.getX(), blockposition2.getY(), blockposition2.getZ()); // Paper - use blockposition2 instead of blockposition to prevent infinite loops
|
|
return this.b;
|
|
- } else if (this.b.equals(blockposition1)) {
|
|
+ } else if (this.b.equals(blockposition3)) { // Paper - use blockposition3 instead of blockposition1 to prevent infinite loops
|
|
return (BlockPosition.MutableBlockPosition) this.endOfData();
|
|
} else {
|
|
int i = this.b.getX();
|
|
int j = this.b.getY();
|
|
int k = this.b.getZ();
|
|
|
|
+ // Paper start - use blockposition2 and blockposition3 to prevent infinite loops
|
|
+ /*
|
|
if (i < blockposition1.getX()) {
|
|
++i;
|
|
} else if (j < blockposition1.getY()) {
|
|
@@ -206,6 +222,18 @@ public class BlockPosition extends BaseBlockPosition {
|
|
j = blockposition.getY();
|
|
++k;
|
|
}
|
|
+ */
|
|
+ if (i < blockposition3.getX()) {
|
|
+ ++i;
|
|
+ } else if (j < blockposition3.getY()) {
|
|
+ i = blockposition2.getX();
|
|
+ ++j;
|
|
+ } else if (k < blockposition3.getZ()) {
|
|
+ i = blockposition2.getX();
|
|
+ j = blockposition2.getY();
|
|
+ ++k;
|
|
+ }
|
|
+ // Paper end
|
|
|
|
// Paper start - modify base position variables
|
|
((BaseBlockPosition) this.b).a = i;
|
|
--
|
|
2.7.4
|
|
|