Hi Cocoon developers,

I get the following exception when I use a certain logicsheet:


java.lang.ArrayIndexOutOfBoundsException: -3
at ...serializers.util.Namespaces.commit(Namespaces.java:158)
at ...serializers.EncodingSerializer.startElement(EncodingSerializer.java:446)
at ...sax.XMLTeePipe.startElement(XMLTeePipe.java:83)



The problem occurs here (line marked with *):

    public String[][] commit() {
        int size = this.depth - this.last;
        String result[][] = new String[size][2];
        int k = 0;
        for (int x = this.last; x < this.depth; x++) {
*           result[k][NAMESPACE_PREFIX] = this.pre[x];



For debugging, I added some logging to the push() and pop() methods.
This is the result (the number at the end of the line is the current
Namespaces.last field):


[...] push [i18n] 4 push [xsp] 4 push [input] 4 push [xspdoc] 4 push [esql] 4 push [xsp-vvz-e] 4 push [tree] 4 pop [tree] 3 pop [xsp-vvz-e] 2 pop [esql] 1 pop [xspdoc] 0 pop [input] -1 pop [xsp] -2 pop [i18n] -3 pop [vvz] -4 [...]


Apparently this.last is increased on push, but not decreased on pop which leads to a negative array index. Any ideas what goes wrong? My logicsheet seems to be proper XSLT.

Thanks in advance,
-- Andreas



Reply via email to