This is an automated email from the ASF dual-hosted git repository.
garydgregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/master by this push:
new df5245a79 Keep StopWatch.formatSplitTime from clamping splits to int
millis (#1777)
df5245a79 is described below
commit df5245a79364b7e117d00962829a303086c7e5d5
Author: alhuda <[email protected]>
AuthorDate: Sat Aug 22 21:18:58 2026 +0530
Keep StopWatch.formatSplitTime from clamping splits to int millis (#1777)
---
src/main/java/org/apache/commons/lang3/time/StopWatch.java | 2 +-
.../java/org/apache/commons/lang3/time/StopWatchTest.java | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/commons/lang3/time/StopWatch.java
b/src/main/java/org/apache/commons/lang3/time/StopWatch.java
index 1046844df..1564c5442 100644
--- a/src/main/java/org/apache/commons/lang3/time/StopWatch.java
+++ b/src/main/java/org/apache/commons/lang3/time/StopWatch.java
@@ -327,7 +327,7 @@ public StopWatch(final String message) {
* @since 3.10
*/
public String formatSplitTime() {
- return
DurationFormatUtils.formatDurationHMS(DurationUtils.toMillisInt(getSplitDuration()));
+ return
DurationFormatUtils.formatDurationHMS(DurationUtils.toMillisLong(getSplitDuration()));
}
/**
diff --git a/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
b/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
index d42b79032..03458972c 100644
--- a/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
@@ -147,6 +147,17 @@ void testFormatSplitTime() {
assertTrue(formatSplitTime.startsWith(ZERO_HOURS_PREFIX),
"formatSplitTime");
}
+ @Test
+ void testFormatSplitTimeExceedingIntMillis() throws Exception {
+ final StopWatch watch = StopWatch.createStarted();
+ // Backdate the start so the split spans more than Integer.MAX_VALUE
milliseconds (about 24.86 days).
+ FieldUtils.writeField(watch, "startTimeNanos", System.nanoTime() -
TimeUnit.DAYS.toNanos(30), true);
+ watch.split();
+ final long splitMillis = watch.getSplitDuration().toMillis();
+ assertTrue(splitMillis > Integer.MAX_VALUE, "precondition: split must
exceed Integer.MAX_VALUE millis");
+ assertEquals(DurationFormatUtils.formatDurationHMS(splitMillis),
watch.formatSplitTime(), "formatSplitTime");
+ }
+
@Test
void testFormatSplitTimeWithMessage() {
final StopWatch watch = new StopWatch(MESSAGE);