The code in the snippet looks OK (other than the ASFree & return). Here is a variant of that code that is used in one of our utilities...
ASInt32 pathDataLen = PDEPathGetData(pdfPath, 0, 0);
ASInt32* pathData = new ASInt32[pathDataLen];
if (PDEPathGetData(pdfPath, pathData, pathDataLen) == pathDataLen)
{
pathDataLen /= sizeof(ASInt32);
for (ASInt32 i = 0; i < pathDataLen; ++i)
{
switch (pathData[i])
{
case kPDEMoveTo:
i += 2;
break;
case kPDELineTo:
i += 2;
break;
case kPDECurveTo:
i += 6;
break;
case kPDECurveToV:
i += 4;
break;
case kPDECurveToY:
i += 4;
break;
case kPDERect:
i += 4;
break;
case kPDEClosePath:
break;
default:
// ASSERT_FAIL("Unknown path op!");
break;
}
}
}
if ( pathData )
delete[] pathData;