aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/parallaction/graphics.cpp19
-rw-r--r--engines/parallaction/graphics.h2
2 files changed, 14 insertions, 7 deletions
diff --git a/engines/parallaction/graphics.cpp b/engines/parallaction/graphics.cpp
index 775035e78a..0596fe9321 100644
--- a/engines/parallaction/graphics.cpp
+++ b/engines/parallaction/graphics.cpp
@@ -56,7 +56,6 @@ const byte _glyphWidths[126] = {
0x05, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x06, 0x05, 0x05, 0x05, 0x05
};
-Cnv Graphics::_font;
bool Graphics::_proportionalFont = false;
Point Graphics::_labelPosition[2] = { { 0, 0 }, { 0, 0 } };
StaticCnv Graphics::_mouseComposedArrow;
@@ -797,9 +796,7 @@ void Graphics::getStringExtent(char *text, uint16 maxwidth, int16* width, int16*
void Graphics::setFont(const char* name) {
- if (_font._array != NULL)
- freeCnv(&_font);
-
+ freeCnv(&_font);
_vm->_disk->loadFont(name, &_font);
}
@@ -922,11 +919,20 @@ void Graphics::freeCnv(Cnv *cnv) {
// printf("Graphics::freeCnv()\n");
if (!cnv) return;
+ if (cnv->_count == 0) return;
+ if (!cnv->_array) return;
for (uint16 _si = 0; _si < cnv->_count; _si++) {
- free(cnv->_array[_si]);
+ if (cnv->_array[_si]) {
+ free(cnv->_array[_si]);
+ }
+ cnv->_array[_si] = NULL;
}
- if (cnv->_array) free(cnv->_array);
+
+ if (cnv->_array)
+ free(cnv->_array);
+
+ cnv->_count = 0;
cnv->_array = NULL;
return;
@@ -1126,6 +1132,7 @@ Graphics::Graphics(Parallaction* vm) :
initMouse( 0 );
+ _font._count = 0;
_font._array = NULL;
return;
diff --git a/engines/parallaction/graphics.h b/engines/parallaction/graphics.h
index 5aef2138ea..f338c91ccf 100644
--- a/engines/parallaction/graphics.h
+++ b/engines/parallaction/graphics.h
@@ -156,7 +156,7 @@ protected:
static byte _mouseArrow[256];
static StaticCnv _mouseComposedArrow;
- static Cnv _font;
+ Cnv _font;
protected: