diff options
| author | nyamatongwe <unknown> | 2007-04-25 01:00:45 +0000 | 
|---|---|---|
| committer | nyamatongwe <unknown> | 2007-04-25 01:00:45 +0000 | 
| commit | f43a77b69610a80a87125ed1196207b06166cb8e (patch) | |
| tree | f6480e7f055f42bc730655c47b0139c022d84290 /src | |
| parent | bde8aef4ff5e6bd93c3b2bbd8fd7de80bccbbdb8 (diff) | |
| download | scintilla-mirror-f43a77b69610a80a87125ed1196207b06166cb8e.tar.gz | |
Made fontNames array grow when needed. Fixes bug 1339845 and
lessens memory use.
Diffstat (limited to 'src')
| -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:  | 
