|
FxEvaluateChannelExpression
|
FxEvaluateChannelExpression: event 1
| 3987 | | MagickPrivate MagickBooleanType FxEvaluateChannelExpression ( |
| | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | | | |
| | | (1) entry to ‘FxEvaluateChannelExpression’
|
|
|
FxEvaluateChannelExpression: event 2
| 3997 | | assert (pfx != NULL); |
| | | ^~~~~~ |
| | | | |
| | | (2) following ‘true’ branch (when ‘pfx’ is non-NULL)...
─>─┐ |
| | | │ |
|
|
FxEvaluateChannelExpression: event 3
| | | │ |
| | ┌ | ─────────────────────────────────────────────────────────────┘ |
| 3998 | │ | assert (pfx->image != NULL); |
| | │ | ~~~^~~~~~~ |
| | │ | | |
| | └ | ────────────>(3) ...to here
|
|
|
FxEvaluateChannelExpression: event 4
| 3998 | | assert (pfx->image != NULL); |
| | | ^~~~~~ |
| | | | |
| | | (4) following ‘true’ branch...
─>─┐ |
| | | │ |
|
|
FxEvaluateChannelExpression: event 5
| | | │ |
| | ┌ | ────────────────────────────────────┘ |
| 3999 | │ | assert (pfx->Images != NULL); |
| | │ | ~~~^~~~~~~~ |
| | │ | | |
| | └ | ────────────>(5) ...to here
|
|
|
FxEvaluateChannelExpression: event 6
| 3999 | | assert (pfx->Images != NULL); |
| | | ^~~~~~ |
| | | | |
| | | (6) following ‘true’ branch...
─>─┐ |
| | | │ |
|
|
FxEvaluateChannelExpression: event 7
| | | │ |
| | ┌ | ────────────────────────────────────┘ |
| 4000 | │ | assert (pfx->Imgs != NULL); |
| | │ | ~~~^~~~~~ |
| | │ | | |
| | └ | ────────────>(7) ...to here
|
|
|
FxEvaluateChannelExpression: event 8
| 4000 | | assert (pfx->Imgs != NULL); |
| | | ^~~~~~ |
| | | | |
| | | (8) following ‘true’ branch...
─>─┐ |
| | | │ |
|
|
FxEvaluateChannelExpression: event 9
| | | │ |
| | ┌ | ────────────────────────────────────┘ |
| 4001 | │ | assert (pfx->fxrts != NULL); |
| | │ | ~~~^~~~~~~ |
| | │ | | |
| | └ | ────────────>(9) ...to here
|
|
|
FxEvaluateChannelExpression: event 10
| 4001 | | assert (pfx->fxrts != NULL); |
| | | ^~~~~~ |
| | | | |
| | | (10) following ‘true’ branch...
─>─┐ |
| | | │ |
|
|
FxEvaluateChannelExpression: events 11-12
| | | │ |
| | ┌ | ─────────────────────────────────────┘ |
| 4003 | │ | pfx->fxrts[id].thisPixel = NULL; |
| | │ | ~~~^~~~~~~ |
| | │ | | |
| | └ | ────>(11) ...to here
|
| 4004 | | |
| 4005 | | if (!ExecuteRPN (pfx, &pfx->fxrts[id], &ret, channel, x, y)) { |
| | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | | | |
| | | (12) calling ‘ExecuteRPN’ from ‘FxEvaluateChannelExpression’
|
|
|
ExecuteRPN
|
ExecuteRPN: events 13-26
| 3134 | | static MagickBooleanType ExecuteRPN (FxInfo * pfx, fxRtT * pfxrt, fxFltType *result, |
| | | ^~~~~~~~~~ |
| | | | |
| | | (13) entry to ‘ExecuteRPN’
|
| [...] | |
| 3152 | | if (p == (const Quantum *) NULL) |
| | | ~ |
| | | | |
| | | (14) following ‘false’ branch (when ‘p’ is non-NULL)...
─>─┐ |
| | | │ |
| [...] | |
| | | │ |
| | ┌ | ────────────────────────────────────────────────────────────────┘ |
| 3160 | │ | if (pfx->GotStats) { |
| | │ | ~~~~~~~~~~~~~ |
| | │ | | |
| | └ | ────────>(15) ...to here
|
| [...] | |
| 3169 | | if (pfx->NeedHsl) { |
| | | ~ |
| | | | |
| | | (16) following ‘false’ branch...
─>─┐ |
| | | │ |
| [...] | |
| | | │ |
| | ┌ | ─────────────────────────────────────────┘ |
| 3175 | │ | for (i=0; i < pfx->usedElements; i++) { |
| | │ | ~~~ ~~~~~~~~~~~~~~~~~~~~~ |
| | │ | | | |
| | │ | | (18) following ‘true’ branch...
─>─┐ |
| | └ | ───────>(17) ...to here
│ |
| | | │ |
| | | │ |
| | ┌ | ─────────────────────────────────────────────────┘ |
| 3176 | │ | ElementT *pel = &pfx->Elements[i]; |
| | │ | ~~~~~~~~~~~~~ |
| | │ | | |
| | └ | ───────────────────────>(19) ...to here
|
| 3177 | | switch (pel->nArgs) { |
| | | ~~~~~~ |
| | | | |
| | | (20) following ‘case 0:’ branch...
─>─┐ |
| | | │ |
| | | │ |
| | ┌ | ────────────────────────────────────────────┘ |
| 3178 | │ | case 0: |
| | │ | ~~~~ |
| | │ | | |
| | └ | ───────>(21) ...to here
|
| [...] | |
| 3212 | | switch (pel->oprNum) { |
| | | ~~~~~~ |
| | | | |
| | | (22) following ‘case 59:’ branch...
─>─┐ |
| | | │ |
| [...] | |
| | | │ |
| | ┌ | ─────────────────────────────────────────────┘ |
| 3433 | │ | case fGcd: |
| | │ | ~~~~ |
| | │ | | |
| | └ | ───────>(23) ...to here
|
| 3434 | | if (!IsNaN(regA)) |
| | | ~ |
| | | | |
| | | (24) following ‘true’ branch (when ‘regA ord regA’)...
─>─┐ |
| | | │ |
| | | │ |
| | ┌ | ───────────────────────────────────────────────────────────────────────┘ |
| 3435 | │ | regA = FxGcd (regA, regB, 0); |
| | │ | ~~~~~~~~~~~~~~~~~~~~~ |
| | │ | | |
| | └ | ──────────────────>(25) ...to here
|
| | | (26) calling ‘FxGcd’ from ‘ExecuteRPN’
|
|
|
FxGcd
|
FxGcd: events 27-29
| 3013 | | static fxFltType inline FxGcd (fxFltType x, fxFltType y, const size_t depth) |
| | | ^~~~~ |
| | | | |
| | | (27) entry to ‘FxGcd’
|
| [...] | |
| 3017 | | if (x < y) |
| | | ~ |
| | | | |
| | | (28) following ‘false’ branch (when ‘x >= y’)...
─>─┐ |
| | | │ |
| | | │ |
| | ┌ | ─────────────────────────────────────────────────────────┘ |
| 3018 | │ | return (FxGcd (y, x, depth+1)); |
| 3019 | │ | if ((fabs((double) y) < 0.001) || (depth >= FxMaxFunctionDepth)) |
| | │ | ~~~~~~~~~~ |
| | │ | | |
| | └ | ───────────>(29) ...to here
|
|
|
FxGcd: events 30-31
| 3019 | | if ((fabs((double) y) < 0.001) || (depth >= FxMaxFunctionDepth)) |
| | | ^ |
| | | | |
| | | (30) following ‘false’ branch... ─>─┐ |
| | | │ |
| | | │ |
| | ┌ | ─────────────────────────────────────────┘ |
| 3020 | │ | return (x); |
| 3021 | │ | return (FxGcd (y, x-y*floor((double) (x/y)), depth+1)); |
| | │ | ~~~~~~~ |
| | │ | | |
| | └ | ───────────────────────────────────────────────────>(31) ...to here |
|
|
FxGcd: event 32
| 3021 | | return (FxGcd (y, x-y*floor((double) (x/y)), depth+1)); |
| | | ~~^~~ |
| | | | |
| | | (32) ⚠️ division by zero
|
|
|
|
|