You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2015/03/31 21:48:44 UTC
svn commit: r1670448 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading:
PatchMeshesShadingContext.java Type4ShadingContext.java
Type5ShadingContext.java
Author: tilman
Date: Tue Mar 31 19:48:44 2015
New Revision: 1670448
URL: http://svn.apache.org/r1670448
Log:
PDFBOX-2576: avoid resource leaks, as suggested by Martin Schröder
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java?rev=1670448&r1=1670447&r2=1670448&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java Tue Mar 31 19:48:44 2015
@@ -93,61 +93,66 @@ abstract class PatchMeshesShadingContext
COSStream cosStream = (COSStream) dict;
ImageInputStream mciis = new MemoryCacheImageInputStream(cosStream.getUnfilteredStream());
-
- Point2D[] implicitEdge = new Point2D[4];
- float[][] implicitCornerColor = new float[2][numberOfColorComponents];
-
- byte flag = (byte) 0;
-
try
{
- flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
- }
- catch (EOFException ex)
- {
- LOG.error(ex);
- }
+ Point2D[] implicitEdge = new Point2D[4];
+ float[][] implicitCornerColor = new float[2][numberOfColorComponents];
+
+ byte flag = (byte) 0;
- while (true)
- {
try
{
- boolean isFree = (flag == 0);
- Patch current = readPatch(mciis, isFree, implicitEdge, implicitCornerColor,
- maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange, matrix, xform, numP);
- if (current == null)
- {
- break;
- }
- list.add(current);
flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
- switch (flag)
- {
- case 0:
- break;
- case 1:
- implicitEdge = current.getFlag1Edge();
- implicitCornerColor = current.getFlag1Color();
- break;
- case 2:
- implicitEdge = current.getFlag2Edge();
- implicitCornerColor = current.getFlag2Color();
- break;
- case 3:
- implicitEdge = current.getFlag3Edge();
- implicitCornerColor = current.getFlag3Color();
- break;
- default:
- LOG.warn("bad flag: " + flag);
- break;
- }
}
catch (EOFException ex)
{
- break;
+ LOG.error(ex);
+ }
+
+ while (true)
+ {
+ try
+ {
+ boolean isFree = (flag == 0);
+ Patch current = readPatch(mciis, isFree, implicitEdge, implicitCornerColor,
+ maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange, matrix, xform, numP);
+ if (current == null)
+ {
+ break;
+ }
+ list.add(current);
+ flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
+ switch (flag)
+ {
+ case 0:
+ break;
+ case 1:
+ implicitEdge = current.getFlag1Edge();
+ implicitCornerColor = current.getFlag1Color();
+ break;
+ case 2:
+ implicitEdge = current.getFlag2Edge();
+ implicitCornerColor = current.getFlag2Color();
+ break;
+ case 3:
+ implicitEdge = current.getFlag3Edge();
+ implicitCornerColor = current.getFlag3Color();
+ break;
+ default:
+ LOG.warn("bad flag: " + flag);
+ break;
+ }
+ }
+ catch (EOFException ex)
+ {
+ break;
+ }
}
}
- mciis.close();
+ finally
+ {
+ mciis.close();
+ }
return list;
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java?rev=1670448&r1=1670447&r2=1670448&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java Tue Mar 31 19:48:44 2015
@@ -82,82 +82,87 @@ class Type4ShadingContext extends Gourau
COSStream stream = (COSStream) dict;
ImageInputStream mciis = new MemoryCacheImageInputStream(stream.getUnfilteredStream());
-
- byte flag = (byte) 0;
try
{
- flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
- }
- catch (EOFException ex)
- {
- LOG.error(ex);
- }
-
- while (true)
- {
- Vertex p0, p1, p2;
- Point2D[] ps;
- float[][] cs;
- int lastIndex;
+ byte flag = (byte) 0;
try
{
- switch (flag)
+ flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
+ }
+ catch (EOFException ex)
+ {
+ LOG.error(ex);
+ }
+
+ while (true)
+ {
+ Vertex p0, p1, p2;
+ Point2D[] ps;
+ float[][] cs;
+ int lastIndex;
+ try
{
- case 0:
- p0 = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange,
- matrix, xform);
- flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
- if (flag != 0)
- {
- LOG.error("bad triangle: " + flag);
- }
- p1 = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange,
- matrix, xform);
- mciis.readBits(bitsPerFlag);
- if (flag != 0)
- {
- LOG.error("bad triangle: " + flag);
- }
- p2 = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange,
- matrix, xform);
- ps = new Point2D[] { p0.point, p1.point, p2.point };
- cs = new float[][] { p0.color, p1.color, p2.color };
- list.add(new ShadedTriangle(ps, cs));
- flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
- break;
- case 1:
- case 2:
- lastIndex = list.size() - 1;
- if (lastIndex < 0)
- {
- LOG.error("broken data stream: " + list.size());
- }
- else
- {
- ShadedTriangle preTri = list.get(lastIndex);
- p2 = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY,
- colRange, matrix, xform);
- ps = new Point2D[] { flag == 1 ? preTri.corner[1] : preTri.corner[0],
- preTri.corner[2],
- p2.point };
- cs = new float[][] { flag == 1 ? preTri.color[1] : preTri.color[0],
- preTri.color[2],
- p2.color };
+ switch (flag)
+ {
+ case 0:
+ p0 = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange,
+ matrix, xform);
+ flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
+ if (flag != 0)
+ {
+ LOG.error("bad triangle: " + flag);
+ }
+ p1 = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange,
+ matrix, xform);
+ mciis.readBits(bitsPerFlag);
+ if (flag != 0)
+ {
+ LOG.error("bad triangle: " + flag);
+ }
+ p2 = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange,
+ matrix, xform);
+ ps = new Point2D[] { p0.point, p1.point, p2.point };
+ cs = new float[][] { p0.color, p1.color, p2.color };
list.add(new ShadedTriangle(ps, cs));
flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
- }
- break;
- default:
- LOG.warn("bad flag: " + flag);
- break;
+ break;
+ case 1:
+ case 2:
+ lastIndex = list.size() - 1;
+ if (lastIndex < 0)
+ {
+ LOG.error("broken data stream: " + list.size());
+ }
+ else
+ {
+ ShadedTriangle preTri = list.get(lastIndex);
+ p2 = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY,
+ colRange, matrix, xform);
+ ps = new Point2D[] { flag == 1 ? preTri.corner[1] : preTri.corner[0],
+ preTri.corner[2],
+ p2.point };
+ cs = new float[][] { flag == 1 ? preTri.color[1] : preTri.color[0],
+ preTri.color[2],
+ p2.color };
+ list.add(new ShadedTriangle(ps, cs));
+ flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
+ }
+ break;
+ default:
+ LOG.warn("bad flag: " + flag);
+ break;
+ }
+ }
+ catch (EOFException ex)
+ {
+ break;
}
}
- catch (EOFException ex)
- {
- break;
- }
}
- mciis.close();
+ finally
+ {
+ mciis.close();
+ }
return list;
}
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java?rev=1670448&r1=1670447&r2=1670448&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java Tue Mar 31 19:48:44 2015
@@ -83,19 +83,26 @@ class Type5ShadingContext extends Gourau
COSStream cosStream = (COSStream) cosDictionary;
ImageInputStream mciis = new MemoryCacheImageInputStream(cosStream.getUnfilteredStream());
- while (true)
+ try
{
- Vertex p;
- try
+ while (true)
{
- p = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange, matrix, xform);
- vlist.add(p);
- }
- catch (EOFException ex)
- {
- break;
+ Vertex p;
+ try
+ {
+ p = readVertex(mciis, maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange, matrix, xform);
+ vlist.add(p);
+ }
+ catch (EOFException ex)
+ {
+ break;
+ }
}
}
+ finally
+ {
+ mciis.close();
+ }
int sz = vlist.size(), rowNum = sz / numPerRow;
Vertex[][] latticeArray = new Vertex[rowNum][numPerRow];
if (rowNum < 2)