[vassalengine-svn-trunk] [vassalengine-svn] SF.net SVN: vassalengine:[5914] VASSAL-src/trunk
Brought to you by:
rodneykinney,
uckelman
From: <uck...@us...> - 2009-08-09 20:06:01
|
Revision: 5914 http://vassalengine.svn.sourceforge.net/vassalengine/?rev=5914&view=rev Author: uckelman Date: 2009-08-09 20:05:52 +0000 (Sun, 09 Aug 2009) Log Message: ----------- Merged 3.1@5912,5913. Fixed Bug 2756330: StackOverflowError in BasicPiece.mySetType() Modified Paths: -------------- VASSAL-src/trunk/src/VASSAL/counters/UsePrototype.java Property Changed: ---------------- VASSAL-src/trunk/ Property changes on: VASSAL-src/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /VASSAL-src/branches/3.1:4957,4960-4961,4984-4985,4988,4993,5004,5020,5041,5055,5059,5063-5065,5072-5073,5079,5084,5087,5098-5099,5133,5136,5138-5139,5156,5158,5161,5163,5166,5179-5181,5209,5260,5263,5274,5276,5280,5283-5290,5296,5298,5301-5450,5452-5456,5466-5467,5470,5473-5474,5479,5482,5488,5494-5495,5498,5502,5506,5509-5510,5519,5525,5534,5540,5572,5575-5577,5582,5586,5588,5593,5595-5596,5599,5601,5721-5722,5726,5728-5729,5766-5767,5769,5771,5773,5793-5794,5812,5814,5816,5818,5820,5827,5833,5861,5863,5878,5880,5882,5892,5904 /VASSAL-src/branches/bsmith:4567-4756 /VASSAL-src/branches/bsmith/merge-3:5153 /VASSAL-src/branches/mkiefte:4821-4822,4867 /VASSAL-src/branches/mkiefte-3.1:5424 /VASSAL-src/branches/mkiefte-3.2:4991 /VASSAL-src/branches/rk-jabber:5293 /VASSAL-src/branches/swampwallaby-3.1:5134,5150-5151,5155,5165,5199,5257,5279,5294-5295,5303,5307-5308,5311,5319-5320,5329,5332,5352,5370,5425,5465,5468,5725,5762-5765,5788,5801-5802,5808-5810,5825,5847,5876,5890,5903 /VASSAL-src/branches/swampwallaby-work:4458,4776,4806-4807,4819,4823-4825,4975,5067,5093 /VASSAL-src/branches/swampwallaby-work2:4840,4847,4883,4975,4980,4994,4996,4999-5000,5002-5003,5028 /VASSAL-src/branches/swampwallaby-work3:5086 /VASSAL-src/branches/swampwallaby-work5:4713 /VASSAL-src/branches/swampwallaby-work6:4727,4729-4730,4737,4742-4743,4747,4752,4776 /VASSAL-src/branches/uckelman-3.1:5389,5391,5400-5401,5403-5406,5411-5412,5415,5484-5487,5492-5493,5500-5501,5504,5509,5516,5518,5534 /VASSAL-src/branches/uckelman-findbugs:4869-4915 /VASSAL-src/branches/uckelman-work:4285,4657-4708,4769-4775,4779,4790,4799,4808,4814-4815,4817,4826,4924,4928,4933,4940,4965,4967-4971,5326,5347,5360-5361,5366-5368 + /VASSAL-src/branches/3.1:4957,4960-4961,4984-4985,4988,4993,5004,5020,5041,5055,5059,5063-5065,5072-5073,5079,5084,5087,5098-5099,5133,5136,5138-5139,5156,5158,5161,5163,5166,5179-5181,5209,5260,5263,5274,5276,5280,5283-5290,5296,5298,5301-5450,5452-5456,5466-5467,5470,5473-5474,5479,5482,5488,5494-5495,5498,5502,5506,5509-5510,5519,5525,5534,5540,5572,5575-5577,5582,5586,5588,5593,5595-5596,5599,5601,5721-5722,5726,5728-5729,5766-5767,5769,5771,5773,5793-5794,5812,5814,5816,5818,5820,5827,5833,5861,5863,5878,5880,5882,5892,5904,5912-5913 /VASSAL-src/branches/bsmith:4567-4756 /VASSAL-src/branches/bsmith/merge-3:5153 /VASSAL-src/branches/mkiefte:4821-4822,4867 /VASSAL-src/branches/mkiefte-3.1:5424 /VASSAL-src/branches/mkiefte-3.2:4991 /VASSAL-src/branches/rk-jabber:5293 /VASSAL-src/branches/swampwallaby-3.1:5134,5150-5151,5155,5165,5199,5257,5279,5294-5295,5303,5307-5308,5311,5319-5320,5329,5332,5352,5370,5425,5465,5468,5725,5762-5765,5788,5801-5802,5808-5810,5825,5847,5876,5890,5903,5907 /VASSAL-src/branches/swampwallaby-work:4458,4776,4806-4807,4819,4823-4825,4975,5067,5093 /VASSAL-src/branches/swampwallaby-work2:4840,4847,4883,4975,4980,4994,4996,4999-5000,5002-5003,5028 /VASSAL-src/branches/swampwallaby-work3:5086 /VASSAL-src/branches/swampwallaby-work5:4713 /VASSAL-src/branches/swampwallaby-work6:4727,4729-4730,4737,4742-4743,4747,4752,4776 /VASSAL-src/branches/uckelman-3.1:5389,5391,5400-5401,5403-5406,5411-5412,5415,5484-5487,5492-5493,5500-5501,5504,5509,5516,5518,5534 /VASSAL-src/branches/uckelman-findbugs:4869-4915 /VASSAL-src/branches/uckelman-work:4285,4657-4708,4769-4775,4779,4790,4799,4808,4814-4815,4817,4826,4924,4928,4933,4940,4965,4967-4971,5326,5347,5360-5361,5366-5368 Modified: VASSAL-src/trunk/src/VASSAL/counters/UsePrototype.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/UsePrototype.java 2009-08-09 20:00:28 UTC (rev 5913) +++ VASSAL-src/trunk/src/VASSAL/counters/UsePrototype.java 2009-08-09 20:05:52 UTC (rev 5914) @@ -22,14 +22,20 @@ import java.awt.Graphics; import java.awt.Rectangle; import java.awt.Shape; + import javax.swing.KeyStroke; + import VASSAL.build.module.PrototypeDefinition; import VASSAL.build.module.PrototypesContainer; import VASSAL.build.module.documentation.HelpFile; import VASSAL.build.module.properties.PropertySource; import VASSAL.command.Command; import VASSAL.configure.StringConfigurer; +import VASSAL.tools.ErrorDialog; +import VASSAL.tools.RecursionLimitException; +import VASSAL.tools.RecursionLimiter; import VASSAL.tools.SequenceEncoder; +import VASSAL.tools.RecursionLimiter.Loopable; /** * This trait is a placeholder for a pre-defined series of traits specified in a @@ -41,7 +47,7 @@ * module. * */ -public class UsePrototype extends Decorator implements EditablePiece { +public class UsePrototype extends Decorator implements EditablePiece, Loopable { public static final String ID = "prototype;"; private String prototypeName; private String lastCachedPrototype; @@ -110,21 +116,36 @@ } protected void buildPrototype() { - PrototypeDefinition def = PrototypesContainer.getPrototype(prototypeName); + final PrototypeDefinition def = + PrototypesContainer.getPrototype(prototypeName); if (def != null) { - GamePiece expandedPrototype = def.getPiece(properties); - String type = expandedPrototype.getType(); // Check to see if prototype definition has changed + final GamePiece expandedPrototype = def.getPiece(properties); + + // Check to see if prototype definition has changed + final String type = expandedPrototype.getType(); if (!type.equals(lastCachedPrototype)) { lastCachedPrototype = type; - prototype = PieceCloner.getInstance().clonePiece(expandedPrototype); - Decorator outer = (Decorator) Decorator.getInnermost(prototype).getProperty(Properties.OUTER); - if (outer != null) { // Will be null for an empty prototype - outer.setInner(piece); - prototype.setProperty(Properties.OUTER, this); + try { + RecursionLimiter.startExecution(this); + + prototype = PieceCloner.getInstance().clonePiece(expandedPrototype); + final Decorator outer = (Decorator) + Decorator.getInnermost(prototype).getProperty(Properties.OUTER); + if (outer != null) { // Will be null for an empty prototype + outer.setInner(piece); + prototype.setProperty(Properties.OUTER, this); + } + else { + prototype = null; + } } - else { + catch (RecursionLimitException e) { + RecursionLimiter.infiniteLoop(e); prototype = null; } + finally { + RecursionLimiter.endExecution(); + } } } else { @@ -205,4 +226,13 @@ return ID + nameConfig.getValueString(); } } + + // Implement Loopable + public String getComponentName() { + return getDescription(); + } + + public String getComponentTypeName() { + return "Prototype"; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ vassalengine-svn mailing list vas...@li... https://lists.sourceforge.net/lists/listinfo/vassalengine-svn |