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 4303a36de Reflection builders' cycle registry unregisters per-visit:
cycle-SAFE but DAG-exponential, a 40-level reference diamond drives ~2^40
traversals and unbounded output (f032).
4303a36de is described below
commit 4303a36de3a8b29d19b88e7ca5901f78a536de72
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Sep 6 16:55:27 2026 -0400
Reflection builders' cycle registry unregisters per-visit: cycle-SAFE
but DAG-exponential, a 40-level reference diamond drives ~2^40
traversals and unbounded output (f032).
ToStringStyle.appendEnd(StringBuffer, Object) now always calls
unregister() in a finally clause.
---
.../java/org/apache/commons/lang3/builder/ToStringStyle.java | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
b/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
index cef7745d4..38769b9f8 100644
--- a/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
+++ b/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
@@ -1469,11 +1469,14 @@ protected void appendDetail(final StringBuffer buffer,
final String fieldName, f
* @param object The {@link Object} to build a {@code toString} for.
*/
public void appendEnd(final StringBuffer buffer, final Object object) {
- if (!isFieldSeparatorAtEnd()) {
- removeLastFieldSeparator(buffer);
+ try {
+ if (!isFieldSeparatorAtEnd()) {
+ removeLastFieldSeparator(buffer);
+ }
+ appendContentEnd(buffer);
+ } finally {
+ unregister(object);
}
- appendContentEnd(buffer);
- unregister(object);
}
/**