r9666 - helma-ng/trunk/src/org/helma/template
[email protected] Thu, 23 Apr 2009 21:54:20 +0200 (CEST)
| Newsgroups | gmane.comp.java.helma.cvs |
|---|---|
| Message-ID | <20090423195420.25ADB3D0D6@mia> |
Author: hannes
Date: 2009-04-23 21:54:20 +0200 (Thu, 23 Apr 2009)
New Revision: 9666
Modified:
helma-ng/trunk/src/org/helma/template/MacroTag.java
helma-ng/trunk/src/org/helma/template/SkinParser.java
Log:
Fix nullpointer bug with spaces around the = in named macro parameters.
Details at http://dev.helma.org/trac/helma/changeset/9666
Modified: helma-ng/trunk/src/org/helma/template/MacroTag.java
===================================================================
--- helma-ng/trunk/src/org/helma/template/MacroTag.java 2009-04-23 10:36:42 UTC (rev 9665)
+++ helma-ng/trunk/src/org/helma/template/MacroTag.java 2009-04-23 19:54:20 UTC (rev 9666)
@@ -22,9 +22,9 @@
import org.helma.util.ScriptableMap;
import org.mozilla.javascript.*;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.LinkedList;
/**
* A macro tag. Basically a list of unnamed parameters
@@ -33,7 +33,7 @@
public class MacroTag extends ScriptableObject {
String name;
- ArrayList<Object> args = new ArrayList<Object>();
+ LinkedList<Object> args = new LinkedList<Object>();
Map<String,Object> namedArgs = new CaseInsensitiveMap<String,Object>();
MacroTag filter = null;
int startLine;
Modified: helma-ng/trunk/src/org/helma/template/SkinParser.java
===================================================================
--- helma-ng/trunk/src/org/helma/template/SkinParser.java 2009-04-23 10:36:42 UTC (rev 9665)
+++ helma-ng/trunk/src/org/helma/template/SkinParser.java 2009-04-23 19:54:20 UTC (rev 9666)
@@ -210,7 +210,7 @@
break;
case '=':
if (quotechar == 0 && list.type == ObjectList.MACRO) {
- list.pushParameterName(buffer);
+ list.pushMacroParameterName(buffer);
} else {
buffer.append((char) c);
}
@@ -325,15 +325,16 @@
parameterName = null;
}
- void pushParameterName(StringBuffer buffer) {
+ void pushMacroParameterName(StringBuffer buffer) {
String str = buffer.toString().trim();
buffer.setLength(0);
// if parameter key is empty string there was whitespace between the
// name and the '=', so the real name was already added to our
// unnamed parameter list
- if (str.length() == 0 && !list.isEmpty() &&
- list.get(list.size()-1) instanceof String) {
- parameterName = (String) list.remove(list.size()-1);
+ LinkedList args = macro.args;
+ if (str.length() == 0 && !args.isEmpty() &&
+ args.getLast() instanceof String) {
+ parameterName = (String) args.removeLast();
} else {
parameterName = str;
}