[#3915] Calls to Configuration.derive() create a Configuration that indirectly references the previous Configuration instance

This commit is contained in:
Lukas Eder 2015-01-09 13:17:04 +01:00
parent dd8d3c76f3
commit 13be6d76a7

View File

@ -578,10 +578,7 @@ public class DefaultConfiguration implements Configuration {
*/
@Override
public final Configuration set(RecordMapperProvider newRecordMapperProvider) {
this.recordMapperProvider = newRecordMapperProvider != null
? newRecordMapperProvider
: new DefaultRecordMapperProvider(this);
this.recordMapperProvider = newRecordMapperProvider;
return this;
}
@ -762,7 +759,12 @@ public class DefaultConfiguration implements Configuration {
*/
@Override
public final RecordMapperProvider recordMapperProvider() {
return recordMapperProvider;
// [#3915] Avoid permanently referencing such a DefaultRecordMapperProvider from this
// DefaultConfiguration to prevent memory leaks.
return recordMapperProvider != null
? recordMapperProvider
: new DefaultRecordMapperProvider(this);
}
/**