diff options
author | Raph Levien <raph.levien@artifex.com> | 2001-04-06 22:22:38 +0000 |
---|---|---|
committer | Raph Levien <raph.levien@artifex.com> | 2001-04-06 22:22:38 +0000 |
commit | 924b6f45cb19a8ee2bbfb394c8d611a8e0e0513e (patch) | |
tree | 6226ccf7447521cf1baacf654a23289a6b6581e8 | |
parent | 34d3d7c666e0f92ab1a79dfc8021a0d9ecf2a764 (diff) | |
download | ghostpdl-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.c | 4 |
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]); |