summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaph Levien <raph.levien@artifex.com>2001-04-06 22:22:38 +0000
committerRaph Levien <raph.levien@artifex.com>2001-04-06 22:22:38 +0000
commit924b6f45cb19a8ee2bbfb394c8d611a8e0e0513e (patch)
tree6226ccf7447521cf1baacf654a23289a6b6581e8
parent34d3d7c666e0f92ab1a79dfc8021a0d9ecf2a764 (diff)
downloadghostpdl-924b6f45cb19a8ee2bbfb394c8d611a8e0e0513e.tar.gz
Fix: Fixes crashes in Type 4 function evaluator when stack is empty.
git-svn-id: http://svn.ghostscript.com/ghostscript/trunk@1386 a1074d23-0009-0410-80fe-cf8c14f379e6
-rw-r--r--gs/src/gsfunc4.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gs/src/gsfunc4.c b/gs/src/gsfunc4.c
index 98ac9959b..cf4c5f8ed 100644
--- a/gs/src/gsfunc4.c
+++ b/gs/src/gsfunc4.c
@@ -106,7 +106,8 @@ private int
fn_PtCr_evaluate(const gs_function_t *pfn_common, const float *in, float *out)
{
const gs_function_PtCr_t *pfn = (const gs_function_PtCr_t *)pfn_common;
- calc_value_t vstack[1 + MAX_VSTACK + 1];
+ calc_value_t vstack_buf[2 + MAX_VSTACK + 1];
+ calc_value_t *vstack = &vstack_buf[1];
calc_value_t *vsp = vstack + pfn->params.m;
const byte *p = pfn->params.ops.data;
int i;
@@ -215,6 +216,7 @@ fn_PtCr_evaluate(const gs_function_t *pfn_common, const float *in, float *out)
};
+ vstack[-1].type = CVT_NONE; /* for type dispatch in empty stack case */
vstack[0].type = CVT_NONE; /* catch underflow */
for (i = 0; i < pfn->params.m; ++i)
store_float(&vstack[i + 1], in[i]);