diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2005-07-14 14:31:09 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2005-07-14 14:31:09 +0000 |
| commit | 7a2b1956e0c958ad53ef3385f862de17f8db777f (patch) | |
| tree | eda7d2c2703d2c695705c568f8dd9b03ffca7273 /src | |
| parent | e2504a0881b70867d1c49726010596ba5d12b870 (diff) | |
increased matrix stack depth to 32 units and added error messages on under- and overflow error.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4417 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
| -rw-r--r-- | src/fl_vertex.cxx | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/fl_vertex.cxx b/src/fl_vertex.cxx index 9d9938f09..d9ee96c3a 100644 --- a/src/fl_vertex.cxx +++ b/src/fl_vertex.cxx @@ -34,6 +34,7 @@ #include <config.h> #include <FL/fl_draw.H> #include <FL/x.H> +#include <Fl/FL.H> #include <FL/math.h> #include <stdlib.h> @@ -41,12 +42,22 @@ struct matrix {double a, b, c, d, x, y;}; static matrix m = {1, 0, 0, 1, 0, 0}; -static matrix stack[10]; +static matrix stack[32]; static int sptr = 0; -void fl_push_matrix() {stack[sptr++] = m;} +void fl_push_matrix() { + if (sptr==32) + Fl::error("fl_push_matrix(): matrix stack overflow."); + else + stack[sptr++] = m; +} -void fl_pop_matrix() {m = stack[--sptr];} +void fl_pop_matrix() { + if (sptr==0) + Fl::error("fl_pop_matrix(): matrix stack underflow."); + else + m = stack[--sptr]; +} void fl_mult_matrix(double a, double b, double c, double d, double x, double y) { matrix o; |
