Browse Source

Bugzilla 50988: Fixed a NullPointerException in case a fo:character was removed due to white-space handling.

Thanks to Matthias Reischenbacher.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1088242 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-1_1rc1old
Andreas L. Delmelle 13 years ago
parent
commit
d13c4630ad

+ 15
- 0
src/java/org/apache/fop/fo/FObjMixed.java View File

@@ -50,6 +50,7 @@ public abstract class FObjMixed extends FObj {
}

/** {@inheritDoc} */
@Override
protected void characters(char[] data, int start, int length,
PropertyList pList,
Locator locator) throws FOPException {
@@ -64,6 +65,7 @@ public abstract class FObjMixed extends FObj {
}

/** {@inheritDoc} */
@Override
protected void endOfNode() throws FOPException {

super.endOfNode();
@@ -150,6 +152,7 @@ public abstract class FObjMixed extends FObj {
}

/** {@inheritDoc} */
@Override
protected void addChildNode(FONode child) throws FOPException {

flushText();
@@ -169,6 +172,17 @@ public abstract class FObjMixed extends FObj {
}

/** {@inheritDoc} */
@Override
public void removeChild(FONode child) {
super.removeChild(child);
if (child == this.currentTextNode) {
// reset to following sibling
this.currentTextNode = child.siblings != null ? child.siblings[1] : null;
}
}

/** {@inheritDoc} */
@Override
public void finalizeNode() throws FOPException {

flushText();
@@ -183,6 +197,7 @@ public abstract class FObjMixed extends FObj {
*
* @return iterator for this object
*/
@Override
public CharIterator charIterator() {
return new RecursiveCharIterator(this);
}

+ 43
- 0
test/layoutengine/standard-testcases/block_white-space_bug50988.xml View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- $Id$ -->
<testcase>
<info>
<p>
This test checks for a potential NullPointerException due to white-space removal.
See also: https://issues.apache.org/bugzilla/show_bug.cgi?id=50988
</p>
</info>
<fo>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="even" page-height="210mm" page-width="148mm">
<fo:region-body margin="20mm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="even">
<fo:flow flow-name="xsl-region-body">
<fo:block><fo:character character=" " hyphenate="false"/></fo:block>
<fo:block><fo:character character=" " hyphenate="false"/><fo:character character="A" hyphenate="false"/></fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</fo>
<!-- Default checks only; should just not throw a NPE -->
<checks />
</testcase>

Loading…
Cancel
Save