Author: tilman
Date: Sun Aug 31 08:13:19 2025
New Revision: 1928147

Log:
PDFBOX-6057: check that initial position exists

Modified:
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
  Sun Aug 31 06:30:04 2025        (r1928146)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
  Sun Aug 31 08:13:19 2025        (r1928147)
@@ -19,8 +19,11 @@ package org.apache.pdfbox.contentstream.
 import java.io.IOException;
 import java.util.List;
 import java.awt.geom.Point2D;
-import org.apache.pdfbox.contentstream.operator.MissingOperandException;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.pdfbox.contentstream.operator.MissingOperandException;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.contentstream.operator.Operator;
@@ -33,6 +36,8 @@ import org.apache.pdfbox.contentstream.o
  */
 public final class CurveToReplicateFinalPoint extends GraphicsOperatorProcessor
 {
+    private static final Log LOG = 
LogFactory.getLog(CurveToReplicateFinalPoint.class);
+
     @Override
     public void process(Operator operator, List<COSBase> operands) throws 
IOException
     {
@@ -49,12 +54,22 @@ public final class CurveToReplicateFinal
         COSNumber x3 = (COSNumber)operands.get(2);
         COSNumber y3 = (COSNumber)operands.get(3);
 
+        Point2D currentPoint = context.getCurrentPoint();
+
         Point2D.Float point1 = context.transformedPoint(x1.floatValue(), 
y1.floatValue());
         Point2D.Float point3 = context.transformedPoint(x3.floatValue(), 
y3.floatValue());
 
-        context.curveTo(point1.x, point1.y,
-                        point3.x, point3.y,
-                        point3.x, point3.y);
+        if (currentPoint == null)
+        {
+            LOG.warn("curveTo (" + point3.x + "," + point3.y + ") without 
initial MoveTo");
+            context.moveTo(point3.x, point3.y);
+        }
+        else
+        {
+            context.curveTo(point1.x, point1.y,
+                            point3.x, point3.y,
+                            point3.x, point3.y);
+        }
     }
 
     @Override

Reply via email to