diff options
author | Paul Gilbert | 2011-07-10 14:51:22 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-07-10 14:51:22 +1000 |
commit | 1870f09d3131ea6b9e2646343e5191cda614b49b (patch) | |
tree | 3d76e2b5836b8cfc263553d5db834978727e26b6 /engines/cge/talk.cpp | |
parent | ef83c248d386ec75b4e3ddf3d1178e82a38b6b76 (diff) | |
download | scummvm-rg350-1870f09d3131ea6b9e2646343e5191cda614b49b.tar.gz scummvm-rg350-1870f09d3131ea6b9e2646343e5191cda614b49b.tar.bz2 scummvm-rg350-1870f09d3131ea6b9e2646343e5191cda614b49b.zip |
CGE: Fix several allocation mismatches and Valgrind issues
Diffstat (limited to 'engines/cge/talk.cpp')
-rw-r--r-- | engines/cge/talk.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/engines/cge/talk.cpp b/engines/cge/talk.cpp index f41e31dce6..b6f276c452 100644 --- a/engines/cge/talk.cpp +++ b/engines/cge/talk.cpp @@ -99,7 +99,8 @@ void Font::save() { Talk::Talk(CGEEngine *vm, const char *tx, TBOX_STYLE mode) : Sprite(vm, NULL), _mode(mode), _vm(vm) { - _ts[0] = _ts[1] = NULL; + + _ts = NULL; _flags._syst = true; update(tx); } @@ -107,7 +108,7 @@ Talk::Talk(CGEEngine *vm, const char *tx, TBOX_STYLE mode) Talk::Talk(CGEEngine *vm) : Sprite(vm, NULL), _mode(PURE), _vm(vm) { - _ts[0] = _ts[1] = NULL; + _ts = NULL; _flags._syst = true; } @@ -141,7 +142,7 @@ void Talk::update(const char *tx) { const char *p; uint8 *m; - if (!_ts[0]) { + if (!_ts) { uint16 k = 2 * hmarg; mh = 2 * vmarg + FONT_HIG; for (p = tx; *p; p++) { @@ -155,7 +156,10 @@ void Talk::update(const char *tx) { } if (k > mw) mw = k; + + _ts = new BMP_PTR[2]; _ts[0] = box(mw, mh); + _ts[1] = NULL; } m = _ts[0]->_m + ln * mw + hmarg; @@ -286,6 +290,11 @@ void Talk::putLine(int line, const char *text) { InfoLine::InfoLine(CGEEngine *vm, uint16 w) : Talk(vm), _oldTxt(NULL), _vm(vm) { + if (!_ts) { + _ts = new BMP_PTR[2]; + _ts[1] = NULL; + } + _ts[0] = new Bitmap(w, FONT_HIG, TEXT_BG); setShapeList(_ts); } |