diff options
-rw-r--r-- | src/ViewStyle.cxx | 15 | ||||
-rw-r--r-- | src/ViewStyle.h | 3 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index 6611439f5..1cf95cca2 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -25,11 +25,15 @@ MarginStyle::MarginStyle() : // A list of the fontnames - avoids wasting space in each style FontNames::FontNames() { + size = 8; + names = new char *[size]; max = 0; } FontNames::~FontNames() { Clear(); + delete []names; + names = 0; } void FontNames::Clear() { @@ -47,6 +51,17 @@ const char *FontNames::Save(const char *name) { return names[i]; } } + if (max >= size) { + // Grow array + int sizeNew = size * 2; + char **namesNew = new char *[sizeNew]; + for (int j=0;j<max;j++) { + namesNew[j] = names[j]; + } + delete []names; + names = namesNew; + size = sizeNew; + } names[max] = new char[strlen(name) + 1]; strcpy(names[max], name); max++; diff --git a/src/ViewStyle.h b/src/ViewStyle.h index 86eae63c0..eb4e8dc11 100644 --- a/src/ViewStyle.h +++ b/src/ViewStyle.h @@ -23,7 +23,8 @@ public: */ class FontNames { private: - char *names[STYLE_MAX + 1]; + char **names; + int size; int max; public: |