From: <jsa...@us...> - 2008-11-17 16:28:42
|
Revision: 104 http://flexotask.svn.sourceforge.net/flexotask/?rev=104&view=rev Author: jsauerbach Date: 2008-11-17 16:28:37 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Fix bugs in the code that identifies live classes for deep-cloned parameters. This consists of (1) ensuring that object identity is tracked (not relying on equals() methods). And, (2) ensuring that only reference instance fields are checked (ignoring primitive and static fields). Modified Paths: -------------- trunk/flexotask/src/com/ibm/realtime/flexotask/system/CodeValidator.java Modified: trunk/flexotask/src/com/ibm/realtime/flexotask/system/CodeValidator.java =================================================================== --- trunk/flexotask/src/com/ibm/realtime/flexotask/system/CodeValidator.java 2008-11-14 21:07:25 UTC (rev 103) +++ trunk/flexotask/src/com/ibm/realtime/flexotask/system/CodeValidator.java 2008-11-17 16:28:37 UTC (rev 104) @@ -14,6 +14,7 @@ package com.ibm.realtime.flexotask.system; import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -331,7 +332,7 @@ if (parameter == null) { return; } - if (!alreadyConsidered.add(parameter)) { + if (!alreadyConsidered.add(new IdentityWrapper(parameter))) { return; } Class cls = parameter.getClass(); @@ -356,6 +357,10 @@ for (int i = 0; i < fields.length; i++) { Field field = fields[i]; field.setAccessible(true); + if (field.getType().isPrimitive() || (field.getModifiers() & Modifier.STATIC) != 0) { + continue; + } + /* Examine only reference instance fields */ Object dependent; try { dependent = field.get(parameter); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |