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);

Reply via email to