This is an automated email from the ASF dual-hosted git repository.

pkarwasz pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/2.x by this push:
     new f059acf293 Fix modified method parameters
f059acf293 is described below

commit f059acf293cee25dc0af758b681011443b3f08cd
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Sun Jun 4 23:31:09 2023 +0200

    Fix modified method parameters
---
 .../org/apache/log4j/helpers/PatternConverter.java |  9 ++--
 .../logging/log4j/message/MapMessageTest.java      |  3 +-
 .../core/appender/MemoryMappedFileManager.java     | 12 +++--
 .../core/layout/ByteBufferDestinationHelper.java   | 12 +++--
 .../logging/log4j/core/lookup/StrMatcher.java      |  5 +-
 .../log4j/core/pattern/LevelPatternConverter.java  |  2 +-
 .../core/pattern/MessagePatternConverter.java      |  2 +-
 .../logging/log4j/core/util/StringEncoder.java     | 22 +++++----
 .../log4j/core/util/datetime/FixedDateFormat.java  | 18 ++++----
 .../log4j/perf/jmh/StringEncodingBenchmark.java    | 44 ++++++++++--------
 .../log4j/perf/jmh/TimeFormatBenchmark.java        | 54 +++++++++++-----------
 .../logging/log4j/perf/nogc/OpenHashStringMap.java | 41 ++++++++--------
 .../logging/log4j/perf/util/StackDriver.java       |  8 ++--
 13 files changed, 126 insertions(+), 106 deletions(-)

diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/PatternConverter.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/PatternConverter.java
index 2d91a9d165..a19b107701 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/PatternConverter.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/PatternConverter.java
@@ -96,14 +96,15 @@ public abstract class PatternConverter {
   */
   public
   void spacePad(final StringBuffer sbuf, final int length) {
-    while(length >= 32) {
+    int l = length;
+    while(l >= 32) {
       sbuf.append(SPACES[5]);
-      length -= 32;
+      l -= 32;
     }
 
     for(int i = 4; i >= 0; i--) {
-      if((length & (1<<i)) != 0) {
-    sbuf.append(SPACES[i]);
+      if((l & (1<<i)) != 0) {
+        sbuf.append(SPACES[i]);
       }
     }
   }
diff --git 
a/log4j-api-test/src/test/java/org/apache/logging/log4j/message/MapMessageTest.java
 
b/log4j-api-test/src/test/java/org/apache/logging/log4j/message/MapMessageTest.java
index d1c30be157..d7344c30d4 100644
--- 
a/log4j-api-test/src/test/java/org/apache/logging/log4j/message/MapMessageTest.java
+++ 
b/log4j-api-test/src/test/java/org/apache/logging/log4j/message/MapMessageTest.java
@@ -187,7 +187,8 @@ public class MapMessageTest {
     public static String testJsonFormatterMaxDepth(final int depth) {
         List<Object> list = new LinkedList<>();
         list.add(1);
-        while (--depth > 0) {
+        int currentDepth = depth;
+        while (--currentDepth > 0) {
             list = new LinkedList<>(Collections.singletonList(list));
         }
         return new ObjectMapMessage()
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
index 473024f9cf..6e5ec79627 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
@@ -125,14 +125,16 @@ public class MemoryMappedFileManager extends 
OutputStreamManager {
 
     @Override
     protected synchronized void write(final byte[] bytes, final int offset, 
final int length, final boolean immediateFlush) {
-        while (length > mappedBuffer.remaining()) {
+        int currentOffset = offset;
+        int currentLength = length;
+        while (currentLength > mappedBuffer.remaining()) {
             final int chunk = mappedBuffer.remaining();
-            mappedBuffer.put(bytes, offset, chunk);
-            offset += chunk;
-            length -= chunk;
+            mappedBuffer.put(bytes, currentOffset, chunk);
+            currentOffset += chunk;
+            currentLength -= chunk;
             remap();
         }
-        mappedBuffer.put(bytes, offset, length);
+        mappedBuffer.put(bytes, currentOffset, currentLength);
 
         // no need to call flush() if force is true,
         // already done in AbstractOutputStreamAppender.append
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestinationHelper.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestinationHelper.java
index 7b552d304c..1c2107e2ea 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestinationHelper.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestinationHelper.java
@@ -60,14 +60,16 @@ public final class ByteBufferDestinationHelper {
     public static void writeToUnsynchronized(final byte[] data, final int 
offset, final int length,
             final ByteBufferDestination destination) {
         ByteBuffer buffer = destination.getByteBuffer();
-        while (length > buffer.remaining()) {
+        int currentOffset = offset;
+        int currentLength = length;
+        while (currentLength > buffer.remaining()) {
             final int chunk = buffer.remaining();
-            buffer.put(data, offset, chunk);
-            offset += chunk;
-            length -= chunk;
+            buffer.put(data, currentOffset, chunk);
+            currentOffset += chunk;
+            currentLength -= chunk;
             buffer = destination.drain(buffer);
         }
-        buffer.put(data, offset, length);
+        buffer.put(data, currentOffset, currentLength);
         // No drain in the end.
     }
 }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrMatcher.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrMatcher.java
index 67924e160a..701fbaf8e2 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrMatcher.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrMatcher.java
@@ -359,8 +359,9 @@ public abstract class StrMatcher {
             if (pos + len > bufferEnd) {
                 return 0;
             }
-            for (int i = 0; i < chars.length; i++, pos++) {
-                if (chars[i] != buffer[pos]) {
+            int p = pos;
+            for (int i = 0; i < chars.length; i++, p++) {
+                if (chars[i] != buffer[p]) {
                     return 0;
                 }
             }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
index e212b09a54..2613c2a434 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
@@ -33,7 +33,7 @@ import org.apache.logging.log4j.util.PerformanceSensitive;
 @Plugin(name = "LevelPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({"p", "level"})
 @PerformanceSensitive("allocation")
-public final class LevelPatternConverter extends LogEventPatternConverter {
+public abstract class LevelPatternConverter extends LogEventPatternConverter {
     private static final String OPTION_LENGTH = "length";
     private static final String OPTION_LOWER = "lowerCase";
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
index 04164dbb7c..d9fd5a9804 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
@@ -38,7 +38,7 @@ import org.apache.logging.log4j.util.Strings;
 @Plugin(name = "MessagePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({"m", "msg", "message"})
 @PerformanceSensitive("allocation")
-public final class MessagePatternConverter extends LogEventPatternConverter {
+public abstract class MessagePatternConverter extends LogEventPatternConverter 
{
 
     private static final String LOOKUPS = "lookups";
     private static final String NOLOOKUPS = "nolookups";
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
index b94e4a3700..5a61db64b8 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
@@ -92,22 +92,24 @@ public final class StringEncoder {
         int byteOffset = 0;
         int length = Math.min(charLength, byteArray.length);
         int charDoneIndex = charOffset + length;
-        while (charOffset < charDoneIndex) {
-            final int done = encodeIsoChars(charArray, charOffset, byteArray, 
byteOffset, length);
-            charOffset += done;
+        int currentCharOffset = charOffset;
+        int currentCharLength = charLength;
+        while (currentCharOffset < charDoneIndex) {
+            final int done = encodeIsoChars(charArray, currentCharOffset, 
byteArray, byteOffset, length);
+            currentCharOffset += done;
             byteOffset += done;
             if (done != length) {
-                final char c = charArray.charAt(charOffset++);
-                if ((Character.isHighSurrogate(c)) && (charOffset < 
charDoneIndex)
-                        && 
(Character.isLowSurrogate(charArray.charAt(charOffset)))) {
-                    if (charLength > byteArray.length) {
+                final char c = charArray.charAt(currentCharOffset++);
+                if ((Character.isHighSurrogate(c)) && (currentCharOffset < 
charDoneIndex)
+                        && 
(Character.isLowSurrogate(charArray.charAt(currentCharOffset)))) {
+                    if (currentCharLength > byteArray.length) {
                         charDoneIndex++;
-                        charLength--;
+                        currentCharLength--;
                     }
-                    charOffset++;
+                    currentCharOffset++;
                 }
                 byteArray[(byteOffset++)] = '?';
-                length = Math.min(charDoneIndex - charOffset, byteArray.length 
- byteOffset);
+                length = Math.min(charDoneIndex - currentCharOffset, 
byteArray.length - byteOffset);
             }
         }
         return byteOffset;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
index e90a263512..f6d210d1df 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
@@ -355,33 +355,33 @@ public class FixedDateFormat {
         // 262 bytes (will be inlined when hot enough: <= 
-XX:FreqInlineSize=325 bytes on Linux)
         private int write(final int offset, final char[] buffer, final int 
pos) {
             // This method duplicates part of writeTime()
-
-            buffer[pos++] = offset < 0 ? '-' : '+';
+            int p = pos;
+            buffer[p++] = offset < 0 ? '-' : '+';
             final int absOffset = Math.abs(offset);
             final int hours = absOffset / 3600000;
             int ms = absOffset - (3600000 * hours);
 
             // Hour
             int temp = hours / 10;
-            buffer[pos++] = ((char) (temp + '0'));
+            buffer[p++] = ((char) (temp + '0'));
 
             // Do subtract to get remainder instead of doing % 10
-            buffer[pos++] = ((char) (hours - 10 * temp + '0'));
+            buffer[p++] = ((char) (hours - 10 * temp + '0'));
 
             // Minute
             if (useMinutes) {
-                buffer[pos] = timeSeparatorChar;
-                pos += timeSeparatorCharLen;
+                buffer[p] = timeSeparatorChar;
+                p += timeSeparatorCharLen;
                 final int minutes = ms / 60000;
                 ms -= 60000 * minutes;
 
                 temp = minutes / 10;
-                buffer[pos++] = ((char) (temp + '0'));
+                buffer[p++] = ((char) (temp + '0'));
 
                 // Do subtract to get remainder instead of doing % 10
-                buffer[pos++] = ((char) (minutes - 10 * temp + '0'));
+                buffer[p++] = ((char) (minutes - 10 * temp + '0'));
             }
-            return pos;
+            return p;
         }
 
     }
diff --git 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/StringEncodingBenchmark.java
 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/StringEncodingBenchmark.java
index fc1abe66f0..2c686a5057 100644
--- 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/StringEncodingBenchmark.java
+++ 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/StringEncodingBenchmark.java
@@ -204,22 +204,24 @@ public class StringEncodingBenchmark {
         int offset = 0;
         int length = Math.min(charLength, byteArray.length);
         int charDoneIndex = charOffset + length;
-        while (charOffset < charDoneIndex) {
-            final int m = encodeISOArray(charArray, charOffset, byteArray, 
offset, length);
-            charOffset += m;
+        int currentCharOffset = charOffset;
+        int currentCharLength = charLength;
+        while (currentCharOffset < charDoneIndex) {
+            final int m = encodeISOArray(charArray, currentCharOffset, 
byteArray, offset, length);
+            currentCharOffset += m;
             offset += m;
             if (m != length) {
-                final char c = charArray.charAt(charOffset++);
-                if ((Character.isHighSurrogate(c)) && (charOffset < 
charDoneIndex)
-                        && 
(Character.isLowSurrogate(charArray.charAt(charOffset)))) {
-                    if (charLength > byteArray.length) {
+                final char c = charArray.charAt(currentCharOffset++);
+                if ((Character.isHighSurrogate(c)) && (currentCharOffset < 
charDoneIndex)
+                        && 
(Character.isLowSurrogate(charArray.charAt(currentCharOffset)))) {
+                    if (currentCharLength > byteArray.length) {
                         charDoneIndex++;
-                        charLength--;
+                        currentCharLength--;
                     }
-                    charOffset++;
+                    currentCharOffset++;
                 }
                 byteArray[(offset++)] = '?';
-                length = Math.min(charDoneIndex - charOffset, byteArray.length 
- offset);
+                length = Math.min(charDoneIndex - currentCharOffset, 
byteArray.length - offset);
             }
         }
         return offset;
@@ -252,22 +254,24 @@ public class StringEncodingBenchmark {
         int offset = 0;
         int length = Math.min(charLength, byteArray.length);
         int charDoneIndex = charOffset + length;
-        while (charOffset < charDoneIndex) {
-            final int m = encodeISOArray0(charArray, charOffset, byteArray, 
offset, length);
-            charOffset += m;
+        int currentCharOffset = charOffset;
+        int currentCharLength = charLength;
+        while (currentCharOffset < charDoneIndex) {
+            final int m = encodeISOArray0(charArray, currentCharOffset, 
byteArray, offset, length);
+            currentCharOffset += m;
             offset += m;
             if (m != length) {
-                final char c = charArray[(charOffset++)];
-                if ((Character.isHighSurrogate(c)) && (charOffset < 
charDoneIndex)
-                        && 
(Character.isLowSurrogate(charArray[(charOffset)]))) {
-                    if (charLength > byteArray.length) {
+                final char c = charArray[(currentCharOffset++)];
+                if ((Character.isHighSurrogate(c)) && (currentCharOffset < 
charDoneIndex)
+                        && 
(Character.isLowSurrogate(charArray[(currentCharOffset)]))) {
+                    if (currentCharLength > byteArray.length) {
                         charDoneIndex++;
-                        charLength--;
+                        currentCharLength--;
                     }
-                    charOffset++;
+                    currentCharOffset++;
                 }
                 byteArray[(offset++)] = '?';
-                length = Math.min(charDoneIndex - charOffset, byteArray.length 
- offset);
+                length = Math.min(charDoneIndex - currentCharOffset, 
byteArray.length - offset);
             }
         }
         return offset;
diff --git 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
index bc7b4273be..699a253c54 100644
--- 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
+++ 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
@@ -167,40 +167,41 @@ public class TimeFormatBenchmark {
         // Hour
         // 13/128 is nearly the same as /10 for values up to 65
         int temp = (hour * 13) >> 7;
-        buffer[pos++] = ((char) (temp + '0'));
+        int p = pos;
+        buffer[p++] = ((char) (temp + '0'));
 
         // Do subtract to get remainder instead of doing % 10
-        buffer[pos++] = ((char) (hour - 10 * temp + '0'));
-        buffer[pos++] = ((char) ':');
+        buffer[p++] = ((char) (hour - 10 * temp + '0'));
+        buffer[p++] = ((char) ':');
 
         // Minute
         // 13/128 is nearly the same as /10 for values up to 65
         temp = (minute * 13) >> 7;
-        buffer[pos++] = ((char) (temp + '0'));
+        buffer[p++] = ((char) (temp + '0'));
 
         // Do subtract to get remainder instead of doing % 10
-        buffer[pos++] = ((char) (minute - 10 * temp + '0'));
-        buffer[pos++] = ((char) ':');
+        buffer[p++] = ((char) (minute - 10 * temp + '0'));
+        buffer[p++] = ((char) ':');
 
         // Second
         // 13/128 is nearly the same as /10 for values up to 65
         temp = (second * 13) >> 7;
-        buffer[pos++] = ((char) (temp + '0'));
-        buffer[pos++] = ((char) (second - 10 * temp + '0'));
-        buffer[pos++] = ((char) '.');
+        buffer[p++] = ((char) (temp + '0'));
+        buffer[p++] = ((char) (second - 10 * temp + '0'));
+        buffer[p++] = ((char) '.');
 
         // Millisecond
         // 41/4096 is nearly the same as /100
         temp = (ms * 41) >> 12;
-        buffer[pos++] = ((char) (temp + '0'));
+        buffer[p++] = ((char) (temp + '0'));
 
         ms -= 100 * temp;
         temp = (ms * 205) >> 11; // 205/2048 is nearly the same as /10
-        buffer[pos++] = ((char) (temp + '0'));
+        buffer[p++] = ((char) (temp + '0'));
 
         ms -= 10 * temp;
-        buffer[pos++] = ((char) (ms + '0'));
-        return pos;
+        buffer[p++] = ((char) (ms + '0'));
+        return p;
     }
 
     StringBuilder formatStringBuilder(final long time, final StringBuilder 
buffer) {
@@ -274,36 +275,37 @@ public class TimeFormatBenchmark {
 
         // Hour
         int temp = hours / 10;
-        buffer[pos++] = ((char) (temp + '0'));
+        int p = pos;
+        buffer[p++] = ((char) (temp + '0'));
 
         // Do subtract to get remainder instead of doing % 10
-        buffer[pos++] = ((char) (hours - 10 * temp + '0'));
-        buffer[pos++] = ((char) ':');
+        buffer[p++] = ((char) (hours - 10 * temp + '0'));
+        buffer[p++] = ((char) ':');
 
         // Minute
         temp = minutes / 10;
-        buffer[pos++] = ((char) (temp + '0'));
+        buffer[p++] = ((char) (temp + '0'));
 
         // Do subtract to get remainder instead of doing % 10
-        buffer[pos++] = ((char) (minutes - 10 * temp + '0'));
-        buffer[pos++] = ((char) ':');
+        buffer[p++] = ((char) (minutes - 10 * temp + '0'));
+        buffer[p++] = ((char) ':');
 
         // Second
         temp = seconds / 10;
-        buffer[pos++] = ((char) (temp + '0'));
-        buffer[pos++] = ((char) (seconds - 10 * temp + '0'));
-        buffer[pos++] = ((char) '.');
+        buffer[p++] = ((char) (temp + '0'));
+        buffer[p++] = ((char) (seconds - 10 * temp + '0'));
+        buffer[p++] = ((char) '.');
 
         // Millisecond
         temp = ms / 100;
-        buffer[pos++] = ((char) (temp + '0'));
+        buffer[p++] = ((char) (temp + '0'));
 
         ms -= 100 * temp;
         temp = ms / 10;
-        buffer[pos++] = ((char) (temp + '0'));
+        buffer[p++] = ((char) (temp + '0'));
 
         ms -= 10 * temp;
-        buffer[pos++] = ((char) (ms + '0'));
-        return pos;
+        buffer[p++] = ((char) (ms + '0'));
+        return p;
     }
 }
diff --git 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashStringMap.java
 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashStringMap.java
index b5b5ace8f3..db9979161e 100644
--- 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashStringMap.java
+++ 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashStringMap.java
@@ -818,12 +818,13 @@ public class OpenHashStringMap<K, V> implements 
StringMap, ThreadContextMap {
          * @return a hash value with good avalanching properties.
          */
         public static int murmurHash3(final int x) {
-            x ^= x >>> 16;
-            x *= 0x85ebca6b;
-            x ^= x >>> 13;
-            x *= 0xc2b2ae35;
-            x ^= x >>> 16;
-            return x;
+            int h = x;
+            h ^= h >>> 16;
+            h *= 0x85ebca6b;
+            h ^= h >>> 13;
+            h *= 0xc2b2ae35;
+            h ^= h >>> 16;
+            return h;
         }
 
         /**
@@ -863,12 +864,13 @@ public class OpenHashStringMap<K, V> implements 
StringMap, ThreadContextMap {
             if (x == 0) {
                 return 1;
             }
-            x--;
-            x |= x >> 1;
-            x |= x >> 2;
-            x |= x >> 4;
-            x |= x >> 8;
-            return (x | x >> 16) + 1;
+            int r = x;
+            r--;
+            r |= r >> 1;
+            r |= r >> 2;
+            r |= r >> 4;
+            r |= r >> 8;
+            return (r | r >> 16) + 1;
         }
 
         /** Return the least power of two greater than or equal to the 
specified value.
@@ -882,13 +884,14 @@ public class OpenHashStringMap<K, V> implements 
StringMap, ThreadContextMap {
             if (x == 0) {
                 return 1;
             }
-            x--;
-            x |= x >> 1;
-            x |= x >> 2;
-            x |= x >> 4;
-            x |= x >> 8;
-            x |= x >> 16;
-            return (x | x >> 32) + 1;
+            long r = x;
+            r--;
+            r |= r >> 1;
+            r |= r >> 2;
+            r |= r >> 4;
+            r |= r >> 8;
+            r |= r >> 16;
+            return (r | r >> 32) + 1;
         }
 
 
diff --git 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/util/StackDriver.java 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/util/StackDriver.java
index c40d60b0d0..30f88655be 100644
--- 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/util/StackDriver.java
+++ 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/util/StackDriver.java
@@ -24,18 +24,20 @@ import java.util.function.Function;
  */
 public class StackDriver {
     public StackTraceElement deepCall(final int initialDepth, final Integer 
targetDepth, final Function<String, StackTraceElement> supplier) {
-        if (--initialDepth == 0) {
+        int depth = initialDepth;
+        if (--depth == 0) {
             final Processor processor = new Processor();
             return processor.apply(targetDepth, supplier);
         }
-        return deepCall(initialDepth, targetDepth, supplier);
+        return deepCall(depth, targetDepth, supplier);
     }
 
     public static class Processor implements BiFunction<Integer, 
Function<String, StackTraceElement>, StackTraceElement> {
         private static final String FQCN = Processor.class.getName();
 
         @Override
-        public StackTraceElement apply(final Integer depth, final 
Function<String, StackTraceElement> function) {
+        public StackTraceElement apply(final Integer initialDepth, final 
Function<String, StackTraceElement> function) {
+            int depth = initialDepth;
             if (--depth == 0) {
                 return function.apply(FQCN);
             }

Reply via email to