Author: tilman
Date: Sun Aug 31 08:13:25 2025
New Revision: 1928149

Log:
PDFBOX-6057: check that initial position exists

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

Modified: 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
==============================================================================
--- 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
  Sun Aug 31 08:13:22 2025        (r1928148)
+++ 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
  Sun Aug 31 08:13:25 2025        (r1928149)
@@ -20,9 +20,11 @@ import java.io.IOException;
 import java.util.List;
 import java.awt.geom.Point2D;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import org.apache.pdfbox.contentstream.PDFGraphicsStreamEngine;
 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;
@@ -35,6 +37,8 @@ import org.apache.pdfbox.contentstream.o
  */
 public final class CurveToReplicateFinalPoint extends GraphicsOperatorProcessor
 {
+    private static final Log LOG = 
LogFactory.getLog(CurveToReplicateFinalPoint.class);
+
     public CurveToReplicateFinalPoint(PDFGraphicsStreamEngine context)
     {
         super(context);
@@ -57,12 +61,22 @@ public final class CurveToReplicateFinal
         COSNumber y3 = (COSNumber)operands.get(3);
 
         PDFGraphicsStreamEngine context = getGraphicsContext();
+        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