[Scummvm-git-logs] scummvm master -> 3919f53326cc740fb6fd1809a211247b90efd10e

sev- sev at scummvm.org
Wed Nov 10 18:53:24 UTC 2021


This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7a4e5612de JANITORIAL: Replace new[]/memset with new[]()
9c3d7c9621 GOB: Replace new[]/memset with new[]()
33a4eaa4d2 GRIM: Replace new[]/memset with new[]()
14f516282c KYRA: Replace new[]/memset with new[]()
c2e7eeb563 SCUMM: Replace new[]/memset with new[]()
3919f53326 ENGINES: Replace new[]/memset with new[]()


Commit: 7a4e5612de6560c09ec98221d69b1040608b7f04
    https://github.com/scummvm/scummvm/commit/7a4e5612de6560c09ec98221d69b1040608b7f04
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-11-10T19:53:15+01:00

Commit Message:
JANITORIAL: Replace new[]/memset with new[]()

Mostly done using the following Ruby script:

(Dir.glob('**/*.cpp') + Dir.glob('**/*.h')).each do |file|
  s = File.read(file, encoding: 'iso8859-1')
  t = s.gsub(/(([\w_.\[\]]+)\s*=\s*new\s+\S+?\[[^\]]+?\](?!\())([^\{\}]*?)\n\s+memset\(\s*\2\s*,\s*0\s*,[^;]*;/m, '\1()\3')
  if t != s
    File.open(file, 'w') { |io| io.write(t) }
  end
end

Changed paths:
    audio/decoders/wma.cpp
    audio/mods/mod_xm_s3m.cpp
    audio/mods/module_mod_xm_s3m.cpp
    audio/softsynth/fmtowns_pc98/sega_audio.cpp
    audio/softsynth/fmtowns_pc98/towns_pc98_fmsynth.cpp
    backends/platform/android3d/texture.cpp
    backends/platform/psp/tests.cpp
    common/str-enc.cpp
    common/winexe.cpp
    graphics/fonts/macfont.cpp
    graphics/scalerplugin.cpp
    image/codecs/codec.cpp
    image/codecs/indeo3.cpp
    image/codecs/xan.cpp
    image/pict.cpp
    video/avi_decoder.cpp
    video/bink_decoder.cpp
    video/coktel_decoder.cpp
    video/dxa_decoder.cpp
    video/flic_decoder.cpp
    video/hnm_decoder.cpp
    video/qt_decoder.cpp


diff --git a/audio/decoders/wma.cpp b/audio/decoders/wma.cpp
index 6f9fdf2aea..c769827ca9 100644
--- a/audio/decoders/wma.cpp
+++ b/audio/decoders/wma.cpp
@@ -590,9 +590,8 @@ Common::SeekableReadStream *WMACodec::decodeSuperFrame(Common::SeekableReadStrea
 
 		// PCM output data
 		outputDataSize = frameCount * _channels * _frameLen;
-		outputData     = new int16[outputDataSize];
+		outputData     = new int16[outputDataSize]();
 
-		memset(outputData, 0, outputDataSize * 2);
 
 		// Number of bits data that completes the last superframe's overhang.
 		int bitOffset = bits.getBits(_byteOffsetBits + 3);
@@ -664,9 +663,8 @@ Common::SeekableReadStream *WMACodec::decodeSuperFrame(Common::SeekableReadStrea
 
 		// PCM output data
 		outputDataSize = _channels * _frameLen;
-		outputData     = new int16[outputDataSize];
+		outputData     = new int16[outputDataSize]();
 
-		memset(outputData, 0, outputDataSize * 2);
 
 		// Decode the frame
 		if (!decodeFrame(bits, outputData)) {
diff --git a/audio/mods/mod_xm_s3m.cpp b/audio/mods/mod_xm_s3m.cpp
index e19983744d..2a7bf677da 100644
--- a/audio/mods/mod_xm_s3m.cpp
+++ b/audio/mods/mod_xm_s3m.cpp
@@ -1347,8 +1347,7 @@ void ModXmS3mStream::setSequencePos(int pos) {
 	_playCount = new int8 *[_module.sequenceLen];
 	memset(_playCount, 0, _module.sequenceLen * sizeof(int8 *));
 	int len = initPlayCount(_playCount);
-	_playCount[0] = new int8[len];
-	memset(_playCount[0], 0, len * sizeof(int8));
+	_playCount[0] = new int8[len]();
 	initPlayCount(_playCount);
 
 	for (int idx = 0; idx < _module.numChannels; ++idx) {
diff --git a/audio/mods/module_mod_xm_s3m.cpp b/audio/mods/module_mod_xm_s3m.cpp
index 61c697343e..08971d9393 100644
--- a/audio/mods/module_mod_xm_s3m.cpp
+++ b/audio/mods/module_mod_xm_s3m.cpp
@@ -218,8 +218,7 @@ bool ModuleModXmS3m::loadMod(Common::SeekableReadStream &st) {
 
 	// load instruments
 	numInstruments = 31;
-	instruments = new Instrument[numInstruments + 1];
-	memset(instruments, 0, sizeof(Instrument) * (numInstruments + 1));
+	instruments = new Instrument[numInstruments + 1]();
 	instruments[0].numSamples = 1;
 	instruments[0].samples = new Sample[1];
 	memset(&instruments[0].samples[0], 0, sizeof(Sample));
@@ -332,8 +331,7 @@ bool ModuleModXmS3m::loadMod(Common::SeekableReadStream &st) {
 		 */
 
 		int numNotes = patterns[i].numChannels * patterns[i].numRows;
-		patterns[i].notes = new Note[numNotes];
-		memset(patterns[i].notes, 0, numNotes * sizeof(Note));
+		patterns[i].notes = new Note[numNotes]();
 		for (int idx = 0; idx < numNotes; ++idx) {
 			byte first = st.readByte();
 			byte second = st.readByte();
@@ -451,8 +449,7 @@ bool ModuleModXmS3m::loadXm(Common::SeekableReadStream &st) {
 		// load notes
 		patterns[i].numChannels = numChannels;
 		int numNotes = patterns[i].numRows * numChannels;
-		patterns[i].notes = new Note[numNotes];
-		memset(patterns[i].notes, 0, numNotes * sizeof(Note));
+		patterns[i].notes = new Note[numNotes]();
 
 		if (patDataLength > 0) {
 			for (int j = 0; j < numNotes; ++j) {
@@ -484,10 +481,8 @@ bool ModuleModXmS3m::loadXm(Common::SeekableReadStream &st) {
 	}
 
 	// load instruments
-	instruments = new Instrument[numInstruments + 1];
-	memset(instruments, 0, (numInstruments + 1) * sizeof(Instrument));
-	instruments[0].samples = new Sample[1];
-	memset(instruments[0].samples, 0, sizeof(Sample));
+	instruments = new Instrument[numInstruments + 1]();
+	instruments[0].samples = new Sample[1]();
 	for (int i = 1; i <= numInstruments; ++i) {
 		st.seek(offset, SEEK_SET);
 		offset += st.readUint32LE();
@@ -501,8 +496,7 @@ bool ModuleModXmS3m::loadXm(Common::SeekableReadStream &st) {
 		// load sample number
 		int nSamples = st.readUint16LE();
 		ins.numSamples = nSamples > 0 ? nSamples : 1;
-		ins.samples = new Sample[ins.numSamples];
-		memset(ins.samples, 0, ins.numSamples * sizeof(Sample));
+		ins.samples = new Sample[ins.numSamples]();
 		st.readUint32LE(); // skip 4 byte
 
 		// load instrument informations
@@ -656,16 +650,13 @@ bool ModuleModXmS3m::loadS3m(Common::SeekableReadStream &st) {
 	int moduleDataIndex = st.pos();
 
 	// load instruments
-	instruments = new Instrument[numInstruments + 1];
-	memset(instruments, 0, sizeof(Instrument) * (numInstruments + 1));
+	instruments = new Instrument[numInstruments + 1]();
 	instruments[0].numSamples = 1;
-	instruments[0].samples = new Sample[1];
-	memset(instruments[0].samples, 0, sizeof(Sample));
+	instruments[0].samples = new Sample[1]();
 	for (int i = 1; i <= numInstruments; ++i) {
 		Instrument &instrum = instruments[i];
 		instrum.numSamples = 1;
-		instrum.samples = new Sample[1];
-		memset(instrum.samples, 0, sizeof(Sample));
+		instrum.samples = new Sample[1]();
 		Sample &sample = instrum.samples[0];
 
 		// get instrument offset
@@ -725,8 +716,7 @@ bool ModuleModXmS3m::loadS3m(Common::SeekableReadStream &st) {
 	}
 
 	// load patterns
-	patterns = new Pattern[numPatterns];
-	memset(patterns, 0, numPatterns * sizeof(Pattern));
+	patterns = new Pattern[numPatterns]();
 	for (int i = 0; i < numPatterns; ++i) {
 		patterns[i].numChannels = numChannels;
 		patterns[i].numRows = 64;
@@ -737,8 +727,7 @@ bool ModuleModXmS3m::loadS3m(Common::SeekableReadStream &st) {
 		st.seek(patOffset, SEEK_SET);
 
 		// load notes
-		patterns[i].notes = new Note[numChannels * 64];
-		memset(patterns[i].notes, 0, numChannels * 64 * sizeof(Note));
+		patterns[i].notes = new Note[numChannels * 64]();
 		int row = 0;
 		while (row < 64) {
 			byte token = st.readByte();
@@ -794,8 +783,7 @@ bool ModuleModXmS3m::loadS3m(Common::SeekableReadStream &st) {
 	}
 
 	// load default panning
-	defaultPanning = new byte[numChannels];
-	memset(defaultPanning, 0, numChannels);
+	defaultPanning = new byte[numChannels]();
 	for (int chan = 0; chan < 32; ++chan) {
 		if (channelMap[chan] >= 0) {
 			byte panning = 7;
@@ -837,8 +825,7 @@ bool ModuleModXmS3m::loadAmf(Common::SeekableReadStream &st) {
 	st.read(sequence, 256); // Always 256 bytes in the file.
 
 	// Read sample headers..
-	instruments = new Instrument[numInstruments + 1];
-	memset(instruments, 0, sizeof(Instrument) * (numInstruments + 1));
+	instruments = new Instrument[numInstruments + 1]();
 	instruments[0].numSamples = 1;
 	instruments[0].samples = new Sample[1];
 	memset(&instruments[0].samples[0], 0, sizeof(Sample));
@@ -874,16 +861,14 @@ bool ModuleModXmS3m::loadAmf(Common::SeekableReadStream &st) {
 	st.skip((64 - numInstruments) * 37); // 37 == sample header len
 
 	// load patterns
-	patterns = new Pattern[numPatterns];
-	memset(patterns, 0, numPatterns * sizeof(Pattern));
+	patterns = new Pattern[numPatterns]();
 	for (int i = 0; i < numPatterns; ++i) {
 		// Always 8 channels, 64 rows.
 		patterns[i].numChannels = 8;
 		patterns[i].numRows = 64;
 
 		// load notes
-		patterns[i].notes = new Note[8 * 64];
-		memset(patterns[i].notes, 0, 8 * 64 * sizeof(Note));
+		patterns[i].notes = new Note[8 * 64]();
 		for (int row = 0; row < 64; row++) {
 			for (int channel = 0; channel < 8; channel++) {
 				Note &n = patterns[i].notes[row * 8 + channel];
diff --git a/audio/softsynth/fmtowns_pc98/sega_audio.cpp b/audio/softsynth/fmtowns_pc98/sega_audio.cpp
index 798a2b84a9..0965e27982 100644
--- a/audio/softsynth/fmtowns_pc98/sega_audio.cpp
+++ b/audio/softsynth/fmtowns_pc98/sega_audio.cpp
@@ -190,8 +190,7 @@ bool SegaAudioInterfaceInternal::init() {
 	if (!TownsPC98_FmSynth::init())
 		return false;
 
-	_pcmBanks = new int8[0x10000];
-	memset(_pcmBanks, 0, 0x10000);
+	_pcmBanks = new int8[0x10000]();
 	_pcmChan = new SegaPCMChannel*[8];
 	_psgDev = new SegaPSG(7670454 / 72, 16);
 	_pcmDev = new PCMDevice_Base(33300, 16, 8);
diff --git a/audio/softsynth/fmtowns_pc98/towns_pc98_fmsynth.cpp b/audio/softsynth/fmtowns_pc98/towns_pc98_fmsynth.cpp
index 8be4ae90e0..0109e0d868 100644
--- a/audio/softsynth/fmtowns_pc98/towns_pc98_fmsynth.cpp
+++ b/audio/softsynth/fmtowns_pc98/towns_pc98_fmsynth.cpp
@@ -1139,8 +1139,7 @@ int TownsPC98_FmSynth::readBuffer(int16 *buffer, const int numSamples) {
 		}
 		delete[] _renderBuffer;
 		_renderBufferSize = requiredSize;
-		_renderBuffer = new int32[_renderBufferSize];
-		memset(_renderBuffer, 0, sizeof(int32) * _renderBufferSize);
+		_renderBuffer = new int32[_renderBufferSize]();
 	}
 
 	int outSamplesLeft = numSamples >> 1;
@@ -1320,8 +1319,7 @@ void TownsPC98_FmSynth::generateTables() {
 	}
 
 	delete[] _oprRateshift;
-	_oprRateshift = new uint8[130];
-	memset(_oprRateshift, 0, 130);
+	_oprRateshift = new uint8[130]();
 	dst = (uint8 *)_oprRateshift + 32;
 	for (int i = 11; i; i--) {
 		memset(dst, i, 4);
@@ -1334,8 +1332,7 @@ void TownsPC98_FmSynth::generateTables() {
 		_oprFrq[i] = (uint32)i << (11 - _rateScale);
 
 	delete[] _oprAttackDecay;
-	_oprAttackDecay = new uint8[152];
-	memset(_oprAttackDecay, 0, 152);
+	_oprAttackDecay = new uint8[152]();
 	for (int i = 0; i < 36; i++)
 		WRITE_BE_UINT32(_oprAttackDecay + (i << 2), _adtStat[i]);
 
diff --git a/backends/platform/android3d/texture.cpp b/backends/platform/android3d/texture.cpp
index b206c29c30..72628746fc 100644
--- a/backends/platform/android3d/texture.cpp
+++ b/backends/platform/android3d/texture.cpp
@@ -349,10 +349,8 @@ GLESFakePaletteTexture::GLESFakePaletteTexture(GLenum glFormat, GLenum glType,
 	_palettePixelFormat = pixelFormat;
 	_fake_format = Graphics::PixelFormat::createFormatCLUT8();
 
-	_palette = new uint16[256];
+	_palette = new uint16[256]();
 	assert(_palette);
-
-	memset(_palette, 0, 256 * 2);
 }
 
 GLESFakePaletteTexture::~GLESFakePaletteTexture() {
diff --git a/backends/platform/psp/tests.cpp b/backends/platform/psp/tests.cpp
index 450a48e563..a9e0ce2c0e 100644
--- a/backends/platform/psp/tests.cpp
+++ b/backends/platform/psp/tests.cpp
@@ -618,8 +618,7 @@ bool PspUnitTests::testFileSystem() {
 	}
 
 	// read the contents
-	char *readBuffer = new char[BufSize + 4];
-	memset(readBuffer, 0, (BufSize + 4));
+	char *readBuffer = new char[BufSize + 4]();
 	index = readBuffer;
 	while (rdStream->read(index, 100) == 100) {
 		index += 100;
@@ -682,8 +681,7 @@ bool PspUnitTests::testFileSystem() {
 		return false;
 	}
 
-	char *readPhrase = new char[phraseLen + 2];
-	memset(readPhrase, 0, phraseLen + 2);
+	char *readPhrase = new char[phraseLen + 2]();
 
 	if ((ret = rdStream->read(readPhrase, phraseLen) != phraseLen)) {
 		PSP_ERROR("read error on phrase. Got %d instead of %d\n", ret, phraseLen);
diff --git a/common/str-enc.cpp b/common/str-enc.cpp
index f1edf1aeac..892f67fade 100644
--- a/common/str-enc.cpp
+++ b/common/str-enc.cpp
@@ -320,8 +320,7 @@ void String::encodeWindows932(const U32String &src) {
 		loadCJKTables();
 
 	if (!reverseTable && windows932ConversionTable) {
-		uint16 *rt = new uint16[0x10000];
-		memset(rt, 0, sizeof(rt[0]) * 0x10000);
+		uint16 *rt = new uint16[0x10000]();
 		for (uint highidx = 0; highidx < 47; highidx++) {
 			uint8 high = 0;
 			if (highidx < 4)
@@ -390,8 +389,7 @@ void String::encodeWindows949(const U32String &src) {
 		loadCJKTables();
 
 	if (!reverseTable && windows949ConversionTable) {
-		uint16 *rt = new uint16[0x10000];
-		memset(rt, 0, sizeof(rt[0]) * 0x10000);
+		uint16 *rt = new uint16[0x10000]();
 
 		for (uint lowidx = 0; lowidx < 0xb2; lowidx++) {
 			uint8 low = 0;
@@ -480,8 +478,7 @@ void String::encodeWindows950(const U32String &src, bool transliterate) {
 		loadCJKTables();
 
 	if (!reverseTable && windows950ConversionTable) {
-		uint16 *rt = new uint16[0x10000];
-		memset(rt, 0, sizeof(rt[0]) * 0x10000);
+		uint16 *rt = new uint16[0x10000]();
 
 		for (uint lowidx = 0; lowidx < 157; lowidx++) {
 			uint8 low = 0;
diff --git a/common/winexe.cpp b/common/winexe.cpp
index 191f8620f0..a0366b1abd 100644
--- a/common/winexe.cpp
+++ b/common/winexe.cpp
@@ -123,9 +123,8 @@ bool WinResources::loadFromCompressedEXE(const String &fileName) {
 	file.readByte(); // file name character change
 	uint32 unpackedLength = file.readUint32LE();
 
-	byte *window = new byte[0x1000];
+	byte *window = new byte[0x1000]();
 	int pos = 0x1000 - 16;
-	memset(window, 0x20, 0x1000); // Initialize to all spaces
 
 	byte *unpackedData = (byte *)malloc(unpackedLength);
 	assert(unpackedData);
diff --git a/graphics/fonts/macfont.cpp b/graphics/fonts/macfont.cpp
index 742ae693ba..dcc3c5a8e2 100644
--- a/graphics/fonts/macfont.cpp
+++ b/graphics/fonts/macfont.cpp
@@ -576,8 +576,7 @@ MacFONTFont *MacFONTFont::scaleFont(const MacFONTFont *src, int newSize, int sla
 	data._rowWords = newBitmapWidth;
 
 	uint bitImageSize = data._rowWords * data._fRectHeight;
-	data._bitImage = new byte[bitImageSize];
-	memset(data._bitImage, 0, bitImageSize * sizeof(byte));
+	data._bitImage = new byte[bitImageSize]();
 
 	int dstPitch = data._rowWords;
 
diff --git a/graphics/scalerplugin.cpp b/graphics/scalerplugin.cpp
index b2904de60d..7301ffec38 100644
--- a/graphics/scalerplugin.cpp
+++ b/graphics/scalerplugin.cpp
@@ -83,8 +83,7 @@ void SourceScaler::setSource(const byte *src, uint pitch, int width, int height,
 
 	// Give _oldSrc same pitch
 	int size = (height + padding * 2) * pitch;
-	_oldSrc = new byte[size];
-	memset(_oldSrc, 0, size);
+	_oldSrc = new byte[size]();
 
 	_bufferedOutput.create(_width * _factor, _height * _factor, _format);
 }
diff --git a/image/codecs/codec.cpp b/image/codecs/codec.cpp
index 47480c5a90..9ecedc9b8b 100644
--- a/image/codecs/codec.cpp
+++ b/image/codecs/codec.cpp
@@ -75,8 +75,7 @@ inline uint16 makeQuickTimeDitherColor(byte r, byte g, byte b) {
 } // End of anonymous namespace
 
 byte *Codec::createQuickTimeDitherTable(const byte *palette, uint colorCount) {
-	byte *buf = new byte[0x10000];
-	memset(buf, 0, 0x10000);
+	byte *buf = new byte[0x10000]();
 
 	Common::List<uint16> checkQueue;
 
diff --git a/image/codecs/indeo3.cpp b/image/codecs/indeo3.cpp
index 2b681c98ce..639831ece3 100644
--- a/image/codecs/indeo3.cpp
+++ b/image/codecs/indeo3.cpp
@@ -155,8 +155,7 @@ void Indeo3Decoder::allocFrames() {
 	_iv_frame[0].the_buf_size = bufsize;
 	_iv_frame[1].the_buf_size = 0;
 
-	_iv_frame[0].the_buf = new byte[bufsize];
-	memset(_iv_frame[0].the_buf, 0, bufsize);
+	_iv_frame[0].the_buf = new byte[bufsize]();
 	_iv_frame[1].the_buf = 0;
 
 	uint32 offs = 0;
diff --git a/image/codecs/xan.cpp b/image/codecs/xan.cpp
index d46c3b9197..432d0c8aa1 100644
--- a/image/codecs/xan.cpp
+++ b/image/codecs/xan.cpp
@@ -59,16 +59,11 @@ XanDecoder::XanDecoder(int width, int height, int bitsPerPixel) : Codec(),
 	if (width % 2)
 		error("XanDecoder: width must be even, not %d", width);
 	_surface.create(_width, _height, getPixelFormat());
-	_scratchbuf = new uint8[_width * _height + SCRATCH_SPARE];
-	_lumabuf = new uint8[_width * _height];
-	_ybuf = new uint8[_width * _height];
-	_ubuf = new uint8[_width * _height / 2];
-	_vbuf = new uint8[_width * _height / 2];
-	memset(_scratchbuf, 0, _width * _height + SCRATCH_SPARE);
-	memset(_lumabuf, 0, _width * _height);
-	memset(_ybuf, 0, _width * _height);
-	memset(_ubuf, 127, _width * _height / 2);
-	memset(_vbuf, 127, _width * _height / 2);
+	_scratchbuf = new uint8[_width * _height + SCRATCH_SPARE]();
+	_lumabuf = new uint8[_width * _height]();
+	_ybuf = new uint8[_width * _height]();
+	_ubuf = new uint8[_width * _height / 2]();
+	_vbuf = new uint8[_width * _height / 2]();
 }
 
 XanDecoder::~XanDecoder() {
diff --git a/image/pict.cpp b/image/pict.cpp
index e7a65b80e5..47f4892725 100644
--- a/image/pict.cpp
+++ b/image/pict.cpp
@@ -344,9 +344,7 @@ void PICTDecoder::unpackBitsRect(Common::SeekableReadStream &stream, bool withPa
 
 	// Ensure we have enough space in the buffer to hold an entire line's worth of pixels
 	uint32 lineSize = MAX<int>(width * bytesPerPixel + (8 * 2 / packBitsData.pixMap.pixelSize), packBitsData.pixMap.rowBytes);
-	byte *buffer = new byte[lineSize * height];
-
-	memset(buffer, 0, lineSize * height);
+	byte *buffer = new byte[lineSize * height]();
 
 	// Read in amount of data per row
 	for (uint16 i = 0; i < packBitsData.pixMap.bounds.height(); i++) {
diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp
index ae86821a22..54bcfef104 100644
--- a/video/avi_decoder.cpp
+++ b/video/avi_decoder.cpp
@@ -335,8 +335,7 @@ void AVIDecoder::handleStreamHeader(uint32 size) {
 		byte *initialPalette = 0;
 
 		if (bmInfo.bitCount == 8) {
-			initialPalette = new byte[256 * 3];
-			memset(initialPalette, 0, 256 * 3);
+			initialPalette = new byte[256 * 3]();
 
 			byte *palette = initialPalette;
 			for (uint32 i = 0; i < bmInfo.clrUsed; i++) {
diff --git a/video/bink_decoder.cpp b/video/bink_decoder.cpp
index 56f58ed885..b420e61c7e 100644
--- a/video/bink_decoder.cpp
+++ b/video/bink_decoder.cpp
@@ -293,23 +293,17 @@ BinkDecoder::BinkVideoTrack::BinkVideoTrack(uint32 width, uint32 height, const G
 	_uvBlockHeight = (height + 15) >> 4;
 
 	// The planes are sized according to the number of blocks
-	_curPlanes[0] = new byte[_yBlockWidth  * 8 * _yBlockHeight  * 8]; // Y
-	_curPlanes[1] = new byte[_uvBlockWidth * 8 * _uvBlockHeight * 8]; // U, 1/4 resolution
-	_curPlanes[2] = new byte[_uvBlockWidth * 8 * _uvBlockHeight * 8]; // V, 1/4 resolution
+	_curPlanes[0] = new byte[_yBlockWidth  * 8 * _yBlockHeight  * 8](); // Y
+	_curPlanes[1] = new byte[_uvBlockWidth * 8 * _uvBlockHeight * 8](); // U, 1/4 resolution
+	_curPlanes[2] = new byte[_uvBlockWidth * 8 * _uvBlockHeight * 8](); // V, 1/4 resolution
 	_curPlanes[3] = new byte[_yBlockWidth  * 8 * _yBlockHeight  * 8]; // A
-	_oldPlanes[0] = new byte[_yBlockWidth  * 8 * _yBlockHeight  * 8]; // Y
-	_oldPlanes[1] = new byte[_uvBlockWidth * 8 * _uvBlockHeight * 8]; // U, 1/4 resolution
-	_oldPlanes[2] = new byte[_uvBlockWidth * 8 * _uvBlockHeight * 8]; // V, 1/4 resolution
+	_oldPlanes[0] = new byte[_yBlockWidth  * 8 * _yBlockHeight  * 8](); // Y
+	_oldPlanes[1] = new byte[_uvBlockWidth * 8 * _uvBlockHeight * 8](); // U, 1/4 resolution
+	_oldPlanes[2] = new byte[_uvBlockWidth * 8 * _uvBlockHeight * 8](); // V, 1/4 resolution
 	_oldPlanes[3] = new byte[_yBlockWidth  * 8 * _yBlockHeight  * 8]; // A
 
 	// Initialize the video with solid green
-	memset(_curPlanes[0],   0, _yBlockWidth  * 8 * _yBlockHeight  * 8);
-	memset(_curPlanes[1],   0, _uvBlockWidth * 8 * _uvBlockHeight * 8);
-	memset(_curPlanes[2],   0, _uvBlockWidth * 8 * _uvBlockHeight * 8);
 	memset(_curPlanes[3], 255, _yBlockWidth  * 8 * _yBlockHeight  * 8);
-	memset(_oldPlanes[0],   0, _yBlockWidth  * 8 * _yBlockHeight  * 8);
-	memset(_oldPlanes[1],   0, _uvBlockWidth * 8 * _uvBlockHeight * 8);
-	memset(_oldPlanes[2],   0, _uvBlockWidth * 8 * _uvBlockHeight * 8);
 	memset(_oldPlanes[3], 255, _yBlockWidth  * 8 * _yBlockHeight  * 8);
 
 	initBundles();
diff --git a/video/coktel_decoder.cpp b/video/coktel_decoder.cpp
index 9862c7fe5a..0906202f41 100644
--- a/video/coktel_decoder.cpp
+++ b/video/coktel_decoder.cpp
@@ -742,9 +742,7 @@ bool PreIMDDecoder::loadStream(Common::SeekableReadStream *stream) {
 	_frameCount = _stream->readUint16LE();
 
 	_videoBufferSize = _width * _height;
-	_videoBuffer     = new byte[_videoBufferSize];
-
-	memset(_videoBuffer, 0, _videoBufferSize);
+	_videoBuffer     = new byte[_videoBufferSize]();
 
 	return true;
 }
@@ -1141,8 +1139,7 @@ bool IMDDecoder::assessVideoProperties() {
 	}
 
 	for (int i = 0; i < 2; i++) {
-		_videoBuffer[i] = new byte[_videoBufferSize];
-		memset(_videoBuffer[i], 0, _videoBufferSize);
+		_videoBuffer[i] = new byte[_videoBufferSize]();
 	}
 
 	return true;
@@ -1958,8 +1955,7 @@ bool VMDDecoder::assessVideoProperties() {
 		}
 
 		for (int i = 0; i < 3; i++) {
-			_videoBuffer[i] = new byte[_videoBufferSize];
-			memset(_videoBuffer[i], 0, _videoBufferSize);
+			_videoBuffer[i] = new byte[_videoBufferSize]();
 
 			_8bppSurface[i].init(_width * _bytesPerPixel, _height, _width * _bytesPerPixel,
 			                     _videoBuffer[i], Graphics::PixelFormat::createFormatCLUT8());
diff --git a/video/dxa_decoder.cpp b/video/dxa_decoder.cpp
index 97d13b05f3..129782e417 100644
--- a/video/dxa_decoder.cpp
+++ b/video/dxa_decoder.cpp
@@ -107,15 +107,12 @@ DXADecoder::DXAVideoTrack::DXAVideoTrack(Common::SeekableReadStream *stream) {
 
 	_frameSize = _width * _height;
 	_decompBufferSize = _frameSize;
-	_frameBuffer1 = new byte[_frameSize];
-	memset(_frameBuffer1, 0, _frameSize);
-	_frameBuffer2 = new byte[_frameSize];
-	memset(_frameBuffer2, 0, _frameSize);
+	_frameBuffer1 = new byte[_frameSize]();
+	_frameBuffer2 = new byte[_frameSize]();
 
 	_scaledBuffer = 0;
 	if (_scaleMode != S_NONE) {
-		_scaledBuffer = new byte[_frameSize];
-		memset(_scaledBuffer, 0, _frameSize);
+		_scaledBuffer = new byte[_frameSize]();
 	}
 
 #ifdef DXA_EXPERIMENT_MAXD
@@ -185,8 +182,7 @@ void DXADecoder::DXAVideoTrack::decodeZlib(byte *data, int size, int totalSize)
 void DXADecoder::DXAVideoTrack::decode12(int size) {
 #ifdef USE_ZLIB
 	if (!_decompBuffer) {
-		_decompBuffer = new byte[_decompBufferSize];
-		memset(_decompBuffer, 0, _decompBufferSize);
+		_decompBuffer = new byte[_decompBufferSize]();
 	}
 
 	/* decompress the input data */
@@ -286,8 +282,7 @@ void DXADecoder::DXAVideoTrack::decode13(int size) {
 	uint8 *codeBuf, *dataBuf, *motBuf, *maskBuf;
 
 	if (!_decompBuffer) {
-		_decompBuffer = new byte[_decompBufferSize];
-		memset(_decompBuffer, 0, _decompBufferSize);
+		_decompBuffer = new byte[_decompBufferSize]();
 	}
 
 	/* decompress the input data */
@@ -482,8 +477,7 @@ const Graphics::Surface *DXADecoder::DXAVideoTrack::decodeNextFrame() {
 
 		if (!_inBuffer || _inBufferSize < size) {
 			delete[] _inBuffer;
-			_inBuffer = new byte[size];
-			memset(_inBuffer, 0, size);
+			_inBuffer = new byte[size]();
 			_inBufferSize = size;
 		}
 
diff --git a/video/flic_decoder.cpp b/video/flic_decoder.cpp
index 24af024fca..b7dcf6e21c 100644
--- a/video/flic_decoder.cpp
+++ b/video/flic_decoder.cpp
@@ -91,8 +91,7 @@ FlicDecoder::FlicVideoTrack::FlicVideoTrack(Common::SeekableReadStream *stream,
 
 	_surface = new Graphics::Surface();
 	_surface->create(width, height, Graphics::PixelFormat::createFormatCLUT8());
-	_palette = new byte[3 * 256];
-	memset(_palette, 0, 3 * 256);
+	_palette = new byte[3 * 256]();
 	_dirtyPalette = false;
 
 	_curFrame = -1;
diff --git a/video/hnm_decoder.cpp b/video/hnm_decoder.cpp
index 6747674c22..2584bbcf6c 100644
--- a/video/hnm_decoder.cpp
+++ b/video/hnm_decoder.cpp
@@ -184,12 +184,9 @@ HNMDecoder::HNM4VideoTrack::HNM4VideoTrack(uint32 width, uint32 height, uint32 f
 		error("Invalid frameSize: expected %d, got %d", width * height, frameSize);
 	}
 
-	_frameBufferF = new byte[frameSize];
-	memset(_frameBufferF, 0, frameSize);
-	_frameBufferC = new byte[frameSize];
-	memset(_frameBufferC, 0, frameSize);
-	_frameBufferP = new byte[frameSize];
-	memset(_frameBufferP, 0, frameSize);
+	_frameBufferF = new byte[frameSize]();
+	_frameBufferC = new byte[frameSize]();
+	_frameBufferP = new byte[frameSize]();
 
 	// We will use _frameBufferF/C/P as the surface pixels, just init there with nullptr to avoid unintended usage of surface
 	const Graphics::PixelFormat &f = Graphics::PixelFormat::createFormatCLUT8();
diff --git a/video/qt_decoder.cpp b/video/qt_decoder.cpp
index 1644dc9f5c..833873314d 100644
--- a/video/qt_decoder.cpp
+++ b/video/qt_decoder.cpp
@@ -152,8 +152,7 @@ Common::QuickTimeParser::SampleDesc *QuickTimeDecoder::readSampleDesc(Common::Qu
 		// if the depth is 2, 4, or 8 bpp, file is palettized
 		if (colorDepth == 2 || colorDepth == 4 || colorDepth == 8) {
 			// Initialize the palette
-			entry->_palette = new byte[256 * 3];
-			memset(entry->_palette, 0, 256 * 3);
+			entry->_palette = new byte[256 * 3]();
 
 			if (colorGreyscale) {
 				debug(0, "Greyscale palette");


Commit: 9c3d7c9621dd24bdee2e7691bc564bff404ffee6
    https://github.com/scummvm/scummvm/commit/9c3d7c9621dd24bdee2e7691bc564bff404ffee6
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-11-10T19:53:15+01:00

Commit Message:
GOB: Replace new[]/memset with new[]()

Changed paths:
    engines/gob/expression.cpp
    engines/gob/map_v1.cpp
    engines/gob/mult_v1.cpp
    engines/gob/mult_v2.cpp
    engines/gob/save/savefile.cpp
    engines/gob/save/saveload_v4.cpp
    engines/gob/surface.cpp
    engines/gob/variables.cpp
    engines/gob/video_v2.cpp


diff --git a/engines/gob/expression.cpp b/engines/gob/expression.cpp
index 7cd5ab0446..3be2b2456d 100644
--- a/engines/gob/expression.cpp
+++ b/engines/gob/expression.cpp
@@ -33,10 +33,8 @@
 namespace Gob {
 
 Expression::Stack::Stack(size_t size) {
-	opers  = new byte[size];
-	values = new int32[size];
-	memset(opers , 0, size * sizeof(byte ));
-	memset(values, 0, size * sizeof(int32));
+	opers  = new byte[size]();
+	values = new int32[size]();
 }
 
 Expression::Stack::~Stack() {
diff --git a/engines/gob/map_v1.cpp b/engines/gob/map_v1.cpp
index 72e37bd5fc..0de0abfd1b 100644
--- a/engines/gob/map_v1.cpp
+++ b/engines/gob/map_v1.cpp
@@ -45,18 +45,15 @@ void Map_v1::init() {
 	_mapWidth  = 26;
 	_mapHeight = 28;
 
-	_passMap = new int8[_mapHeight * _mapWidth];
-	memset(_passMap, 0, _mapHeight * _mapWidth * sizeof(int8));
+	_passMap = new int8[_mapHeight * _mapWidth]();
 
 	_itemsMap = new int16*[_mapHeight];
 	 for (int i = 0; i < _mapHeight; i++) {
-		_itemsMap[i] = new int16[_mapWidth];
-		memset(_itemsMap[i], 0, _mapWidth * sizeof(int16));
+		_itemsMap[i] = new int16[_mapWidth]();
 	}
 
 	_wayPointCount = 40;
-	_wayPoints = new WayPoint[40];
-	memset(_wayPoints, 0, sizeof(WayPoint));
+	_wayPoints = new WayPoint[40]();
 }
 
 void Map_v1::loadMapObjects(const char *avjFile) {
diff --git a/engines/gob/mult_v1.cpp b/engines/gob/mult_v1.cpp
index 78c18a082d..b09ea0533c 100644
--- a/engines/gob/mult_v1.cpp
+++ b/engines/gob/mult_v1.cpp
@@ -290,15 +290,11 @@ void Mult_v1::playMultInit() {
 		delete _animArrayY;
 		delete[] _animArrayData;
 
-		_objects = new Mult_Object[_objCount];
-		_renderData = new int16[9 * _objCount];
+		_objects = new Mult_Object[_objCount]();
+		_renderData = new int16[9 * _objCount]();
 		_animArrayX = new VariablesLE(_objCount * 4);
 		_animArrayY = new VariablesLE(_objCount * 4);
-		_animArrayData = new Mult_AnimData[_objCount];
-
-		memset(_objects, 0, _objCount * sizeof(Mult_Object));
-		memset(_renderData, 0, _objCount * 9 * sizeof(int16));
-		memset(_animArrayData, 0, _objCount * sizeof(Mult_AnimData));
+		_animArrayData = new Mult_AnimData[_objCount]();
 
 		for (_counter = 0; _counter < _objCount; _counter++) {
 			Mult_Object &multObj = _objects[_counter];
diff --git a/engines/gob/mult_v2.cpp b/engines/gob/mult_v2.cpp
index 5f838321f9..4ba76b2367 100644
--- a/engines/gob/mult_v2.cpp
+++ b/engines/gob/mult_v2.cpp
@@ -546,17 +546,12 @@ void Mult_v2::playMultInit() {
 		delete _animArrayY;
 		delete[] _animArrayData;
 
-		_objects = new Mult_Object[_objCount];
-		_orderArray = new int8[_objCount];
-		_renderObjs = new Mult_Object*[_objCount];
+		_objects = new Mult_Object[_objCount]();
+		_orderArray = new int8[_objCount]();
+		_renderObjs = new Mult_Object*[_objCount]();
 		_animArrayX = new VariablesLE(_objCount * 4);
 		_animArrayY = new VariablesLE(_objCount * 4);
-		_animArrayData = new Mult_AnimData[_objCount];
-
-		memset(_objects, 0, _objCount * sizeof(Mult_Object));
-		memset(_orderArray, 0, _objCount * sizeof(int8));
-		memset(_renderObjs, 0, _objCount * sizeof(Mult_Object *));
-		memset(_animArrayData, 0, _objCount * sizeof(Mult_AnimData));
+		_animArrayData = new Mult_AnimData[_objCount]();
 
 		for (_counter = 0; _counter < _objCount; _counter++) {
 			Mult_Object &multObj = _objects[_counter];
diff --git a/engines/gob/save/savefile.cpp b/engines/gob/save/savefile.cpp
index 2a32b7edcf..87e1b15d9d 100644
--- a/engines/gob/save/savefile.cpp
+++ b/engines/gob/save/savefile.cpp
@@ -289,11 +289,8 @@ SavePartSprite::SavePartSprite(uint32 width, uint32 height, bool trueColor) {
 		//          width + height + color +    sprite   + palette
 	_header.setSize(4   +   4    +   1   + _spriteSize + 768);
 
-	_dataSprite  = new byte[_spriteSize];
-	_dataPalette = new byte[768];
-
-	memset(_dataSprite,  0, _spriteSize);
-	memset(_dataPalette, 0, 768);
+	_dataSprite  = new byte[_spriteSize]();
+	_dataPalette = new byte[768]();
 }
 
 SavePartSprite::~SavePartSprite() {
@@ -457,8 +454,7 @@ SavePartInfo::SavePartInfo(uint32 descMaxLength, uint32 gameID,
 	_endian = endian;
 	_varCount = varCount;
 
-	_desc = new char[_descMaxLength + 1];
-	memset(_desc, 0, _descMaxLength + 1);
+	_desc = new char[_descMaxLength + 1]();
 }
 
 SavePartInfo::~SavePartInfo() {
diff --git a/engines/gob/save/saveload_v4.cpp b/engines/gob/save/saveload_v4.cpp
index 516a22c310..3fd142c071 100644
--- a/engines/gob/save/saveload_v4.cpp
+++ b/engines/gob/save/saveload_v4.cpp
@@ -372,8 +372,7 @@ bool SaveLoad_v4::GameHandler::createWriter(int slot) {
 SaveLoad_v4::CurScreenPropsHandler::CurScreenPropsHandler(GobEngine *vm) :
 	SaveHandler(vm) {
 
-	_props = new byte[256000];
-	memset(_props, 0, 256000);
+	_props = new byte[256000]();
 }
 
 SaveLoad_v4::CurScreenPropsHandler::~CurScreenPropsHandler() {
diff --git a/engines/gob/surface.cpp b/engines/gob/surface.cpp
index a2c5614962..9cc0f944a7 100644
--- a/engines/gob/surface.cpp
+++ b/engines/gob/surface.cpp
@@ -182,10 +182,8 @@ Surface::Surface(uint16 width, uint16 height, uint8 bpp, byte *vidMem) :
 	assert((_bpp == 1) || (_bpp == 2) || (_bpp == 4));
 
 	if (!_vidMem) {
-		_vidMem    = new byte[_bpp * _width * _height];
+		_vidMem    = new byte[_bpp * _width * _height]();
 		_ownVidMem = true;
-
-		memset(_vidMem, 0, _bpp * _width * _height);
 	} else
 		_ownVidMem = false;
 }
@@ -228,10 +226,8 @@ void Surface::resize(uint16 width, uint16 height) {
 	_width  = width;
 	_height = height;
 
-	_vidMem    = new byte[_bpp * _width * _height];
+	_vidMem    = new byte[_bpp * _width * _height]();
 	_ownVidMem = true;
-
-	memset(_vidMem, 0, _bpp * _width * _height);
 }
 
 void Surface::setBPP(uint8 bpp) {
diff --git a/engines/gob/variables.cpp b/engines/gob/variables.cpp
index ee9c109193..b74c18fb2f 100644
--- a/engines/gob/variables.cpp
+++ b/engines/gob/variables.cpp
@@ -306,9 +306,7 @@ VariableReference &VariableReference::operator*=(uint32 value) {
 
 
 VariableStack::VariableStack(uint32 size) : _size(size), _position(0) {
-	_stack = new byte[_size];
-
-	memset(_stack, 0, _size);
+	_stack = new byte[_size]();
 }
 
 VariableStack::~VariableStack() {
diff --git a/engines/gob/video_v2.cpp b/engines/gob/video_v2.cpp
index a6900b11bc..d6452b3fb3 100644
--- a/engines/gob/video_v2.cpp
+++ b/engines/gob/video_v2.cpp
@@ -57,11 +57,9 @@ char Video_v2::spriteUncompressor(byte *sprBuf, int16 srcWidth, int16 srcHeight,
 		destDesc.blit(sourceDesc, 0, 0, srcWidth - 1, srcHeight - 1, x, y, (transp == 0) ? -1 : 0);
 		return 1;
 	} else if (sprBuf[2] == 1) {
-		memBuffer = new byte[4370];
+		memBuffer = new byte[4370]();
 		assert(memBuffer);
 
-		memset(memBuffer, 0, 4370);
-
 		srcPtr = sprBuf + 3;
 
 		sourceLeft = READ_LE_UINT32(srcPtr);


Commit: 33a4eaa4d2735f3c5178cf3c2d6d7b9157ba56e8
    https://github.com/scummvm/scummvm/commit/33a4eaa4d2735f3c5178cf3c2d6d7b9157ba56e8
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-11-10T19:53:15+01:00

Commit Message:
GRIM: Replace new[]/memset with new[]()

Changed paths:
    engines/grim/gfx_opengl.cpp
    engines/grim/gfx_opengl_shaders.cpp
    engines/grim/gfx_tinygl.cpp
    engines/grim/movie/codecs/blocky16.cpp
    engines/grim/movie/codecs/blocky8.cpp


diff --git a/engines/grim/gfx_opengl.cpp b/engines/grim/gfx_opengl.cpp
index 8e4a6aa265..242329c6d0 100644
--- a/engines/grim/gfx_opengl.cpp
+++ b/engines/grim/gfx_opengl.cpp
@@ -139,8 +139,7 @@ void GfxOpenGL::setupScreen(int screenW, int screenH) {
 	g_system->showMouse(false);
 
 	int screenSize = _screenWidth * _screenHeight * 4;
-	_storedDisplay = new byte[screenSize];
-	memset(_storedDisplay, 0, screenSize);
+	_storedDisplay = new byte[screenSize]();
 	_smushNumTex = 0;
 
 	_currentShadowArray = nullptr;
@@ -1366,12 +1365,10 @@ void GfxOpenGL::createFont(Font *font) {
 		size = 64;
 
 	uint arraySize = size * size * bpp * charsWide * charsHigh;
-	byte *temp = new byte[arraySize];
+	byte *temp = new byte[arraySize]();
 	if (!temp)
 		error("Could not allocate %d bytes", arraySize);
 
-	memset(temp, 0, arraySize);
-
 	FontUserData *userData = new FontUserData;
 	font->setUserData(userData);
 	userData->texture = 0;
diff --git a/engines/grim/gfx_opengl_shaders.cpp b/engines/grim/gfx_opengl_shaders.cpp
index ccb315f84e..92f3f665dc 100644
--- a/engines/grim/gfx_opengl_shaders.cpp
+++ b/engines/grim/gfx_opengl_shaders.cpp
@@ -1529,9 +1529,7 @@ void GfxOpenGLS::createFont(Font *font) {
 		size = 64;
 
 	uint arraySize = size * size * bpp * charsWide * charsHigh;
-	byte *temp = new byte[arraySize];
-
-	memset(temp, 0, arraySize);
+	byte *temp = new byte[arraySize]();
 
 	FontUserData *userData = new FontUserData;
 	font->setUserData(userData);
@@ -1828,8 +1826,7 @@ void GfxOpenGLS::drawEmergString(int x, int y, const char *text, const Color &fg
 }
 
 void GfxOpenGLS::loadEmergFont() {
-	uint8 *atlas = new uint8[128 * 128];
-	memset(atlas, 0, 128 * 128);
+	uint8 *atlas = new uint8[128 * 128]();
 
 	for (int c = 32; c < 128; ++c) {
 		int blockrow = c / 16;
diff --git a/engines/grim/gfx_tinygl.cpp b/engines/grim/gfx_tinygl.cpp
index cce795df1e..b0dd7c4452 100644
--- a/engines/grim/gfx_tinygl.cpp
+++ b/engines/grim/gfx_tinygl.cpp
@@ -1028,8 +1028,7 @@ void GfxTinyGL::createTextObject(TextObject *text) {
 		int width = font->getBitmapStringLength(currentLine) + 1;
 		int height = font->getStringHeight(currentLine) + 1;
 
-		uint8 *_textBitmap = new uint8[height * width];
-		memset(_textBitmap, 0, height * width);
+		uint8 *_textBitmap = new uint8[height * width]();
 
 		int startColumn = 0;
 		for (unsigned int d = 0; d < currentLine.size(); d++) {
diff --git a/engines/grim/movie/codecs/blocky16.cpp b/engines/grim/movie/codecs/blocky16.cpp
index 111f8e5224..28c386a265 100644
--- a/engines/grim/movie/codecs/blocky16.cpp
+++ b/engines/grim/movie/codecs/blocky16.cpp
@@ -634,18 +634,15 @@ void Blocky16::init(int width, int height) {
 	// 200 bytes is enough for smush anims:
 	// lol, byeruba, crushed, eldepot, heltrain, hostage
 	uint32 deltaSize = size * 3 + 200;
-	_deltaBuf = new byte[deltaSize];
-	memset(_deltaBuf, 0, deltaSize);
+	_deltaBuf = new byte[deltaSize]();
 	_deltaBufs[0] = _deltaBuf;
 	_deltaBufs[1] = _deltaBuf + _frameSize;
 	_curBuf = _deltaBuf + _frameSize * 2;
 }
 
 Blocky16::Blocky16() {
-	_tableBig = new byte[99328];
-	_tableSmall = new byte[32768];
-	memset(_tableBig, 0, 99328);
-	memset(_tableSmall, 0, 32768);
+	_tableBig = new byte[99328]();
+	_tableSmall = new byte[32768]();
 	_deltaBuf = nullptr;
 	_deltaBufs[0] = nullptr;
 	_deltaBufs[1] = nullptr;
diff --git a/engines/grim/movie/codecs/blocky8.cpp b/engines/grim/movie/codecs/blocky8.cpp
index d5a05dc567..67f623214d 100644
--- a/engines/grim/movie/codecs/blocky8.cpp
+++ b/engines/grim/movie/codecs/blocky8.cpp
@@ -548,10 +548,8 @@ static void bompDecodeLine(byte *dst, const byte *src, int len) {
 }
 
 Blocky8::Blocky8() {
-	_tableBig = new byte[99328];
-	_tableSmall = new byte[32768];
-	memset(_tableBig, 0, 99328);
-	memset(_tableSmall, 0, 32768);
+	_tableBig = new byte[99328]();
+	_tableSmall = new byte[32768]();
 	_deltaBuf = nullptr;
 	_width = -1;
 	_height = -1;
@@ -579,8 +577,7 @@ void Blocky8::init(int width, int height) {
 
 	_frameSize = _width * _height;
 	uint32 deltaSize = _frameSize * 3;
-	_deltaBuf = new byte[deltaSize];
-	memset(_deltaBuf, 0, deltaSize);
+	_deltaBuf = new byte[deltaSize]();
 	_deltaBufs[0] = _deltaBuf;
 	_deltaBufs[1] = _deltaBuf + _frameSize;
 	_curBuf = _deltaBuf + _frameSize * 2;


Commit: 14f516282cf507e0a518f01a7d73c6d1077edd3d
    https://github.com/scummvm/scummvm/commit/14f516282cf507e0a518f01a7d73c6d1077edd3d
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-11-10T19:53:15+01:00

Commit Message:
KYRA: Replace new[]/memset with new[]()

Changed paths:
    engines/kyra/engine/eob.cpp
    engines/kyra/engine/eobcommon.cpp
    engines/kyra/engine/items_eob.cpp
    engines/kyra/engine/items_v2.cpp
    engines/kyra/engine/kyra_hof.cpp
    engines/kyra/engine/kyra_lok.cpp
    engines/kyra/engine/kyra_mr.cpp
    engines/kyra/engine/kyra_rpg.cpp
    engines/kyra/engine/lol.cpp
    engines/kyra/engine/scene_eob.cpp
    engines/kyra/engine/sprites.cpp
    engines/kyra/engine/sprites_lol.cpp
    engines/kyra/graphics/animator_lok.cpp
    engines/kyra/graphics/animator_tim.cpp
    engines/kyra/graphics/animator_v2.cpp
    engines/kyra/graphics/screen.cpp
    engines/kyra/graphics/screen_eob.cpp
    engines/kyra/graphics/screen_eob_segacd.cpp
    engines/kyra/graphics/screen_lok.cpp
    engines/kyra/graphics/screen_lol.cpp
    engines/kyra/graphics/vqa.cpp
    engines/kyra/graphics/wsamovie.cpp
    engines/kyra/gui/gui.cpp
    engines/kyra/gui/gui_eob.cpp
    engines/kyra/gui/saveload_eob.cpp
    engines/kyra/resource/staticres_eob.cpp
    engines/kyra/script/script_eob.cpp
    engines/kyra/sequence/seqplayer_eob_segacd.cpp
    engines/kyra/sequence/sequences_eob.cpp
    engines/kyra/sequence/sequences_lok.cpp
    engines/kyra/sequence/sequences_lol.cpp
    engines/kyra/sound/drivers/mlalf98.cpp
    engines/kyra/text/text_eob_segacd.cpp
    engines/kyra/text/text_lol.cpp
    engines/kyra/text/text_rpg.cpp


diff --git a/engines/kyra/engine/eob.cpp b/engines/kyra/engine/eob.cpp
index c8db6d2f28..283efc8e09 100644
--- a/engines/kyra/engine/eob.cpp
+++ b/engines/kyra/engine/eob.cpp
@@ -161,16 +161,11 @@ Common::Error EoBEngine::init() {
 		assert(_txt);
 		_gui = new GUI_EoB_SegaCD(this);
 		assert(_gui);
-		_playFldPattern2 = new uint16[1040];
-		memset(_playFldPattern2, 0, 1040 * sizeof(uint16));
-		_tempPattern = new uint16[924];
-		memset(_tempPattern, 0, 924 * sizeof(uint16));
-		_shakeBackBuffer1 = new uint8[120 * 6];
-		memset(_shakeBackBuffer1, 0, 120 * 6);
-		_shakeBackBuffer2 = new uint8[179 * 6];
-		memset(_shakeBackBuffer2, 0, 179 * 6);
-		_compassData = new uint8[0x5000];
-		memset(_compassData, 0, 0x5000);
+		_playFldPattern2 = new uint16[1040]();
+		_tempPattern = new uint16[924]();
+		_shakeBackBuffer1 = new uint8[120 * 6]();
+		_shakeBackBuffer2 = new uint8[179 * 6]();
+		_compassData = new uint8[0x5000]();
 		_closeSpellbookAfterUse = false;
 	}
 
diff --git a/engines/kyra/engine/eobcommon.cpp b/engines/kyra/engine/eobcommon.cpp
index 79300979a5..bf8c6759a9 100644
--- a/engines/kyra/engine/eobcommon.cpp
+++ b/engines/kyra/engine/eobcommon.cpp
@@ -516,45 +516,35 @@ Common::Error EoBCoreEngine::init() {
 	_blackFadingTable = new uint8[256 * bpp];
 	_greyFadingTable = new uint8[256 * bpp];
 
-	_monsters = new EoBMonsterInPlay[30];
-	memset(_monsters, 0, 30 * sizeof(EoBMonsterInPlay));
+	_monsters = new EoBMonsterInPlay[30]();
 
-	_characters = new EoBCharacter[6];
-	memset(_characters, 0, sizeof(EoBCharacter) * 6);
+	_characters = new EoBCharacter[6]();
 
-	_items = new EoBItem[600];
-	memset(_items, 0, sizeof(EoBItem) * 600);
+	_items = new EoBItem[600]();
 
 	_itemNames = new char*[130];
 	for (int i = 0; i < 130; i++) {
-		_itemNames[i] = new char[35];
-		memset(_itemNames[i], 0, 35);
+		_itemNames[i] = new char[35]();
 	}
 
-	_flyingObjects = new EoBFlyingObject[_numFlyingObjects];
+	_flyingObjects = new EoBFlyingObject[_numFlyingObjects]();
 	_flyingObjectsPtr = _flyingObjects;
-	memset(_flyingObjects, 0, _numFlyingObjects * sizeof(EoBFlyingObject));
 
 	int bufferSize = _flags.useHiColorMode ? 8192 : 4096;
-	_spellAnimBuffer = new uint8[bufferSize];
-	memset(_spellAnimBuffer, 0, bufferSize);
+	_spellAnimBuffer = new uint8[bufferSize]();
 
-	_wallsOfForce = new WallOfForce[5];
-	memset(_wallsOfForce, 0, 5 * sizeof(WallOfForce));
+	_wallsOfForce = new WallOfForce[5]();
 
 	memset(_doorType, 0, sizeof(_doorType));
 	memset(_noDoorSwitch, 0, sizeof(_noDoorSwitch));
 
-	_monsterShapes = new uint8*[36];
-	memset(_monsterShapes, 0, 36 * sizeof(uint8 *));
-	_monsterDecorations = new SpriteDecoration[36];
-	memset(_monsterDecorations, 0, 36 * sizeof(SpriteDecoration));
+	_monsterShapes = new uint8*[36]();
+	_monsterDecorations = new SpriteDecoration[36]();
 	_monsterPalettes = new uint8*[24];
 	for (int i = 0; i < 24; i++)
 		_monsterPalettes[i] = new uint8[16];
 
-	_doorSwitches = new SpriteDecoration[6];
-	memset(_doorSwitches, 0, 6 * sizeof(SpriteDecoration));
+	_doorSwitches = new SpriteDecoration[6]();
 
 	_monsterFlashOverlay = new uint8[16];
 	_monsterStoneOverlay = new uint8[16];
diff --git a/engines/kyra/engine/items_eob.cpp b/engines/kyra/engine/items_eob.cpp
index d55a464c5a..05ff3079a9 100644
--- a/engines/kyra/engine/items_eob.cpp
+++ b/engines/kyra/engine/items_eob.cpp
@@ -99,8 +99,7 @@ void EoBCoreEngine::loadItemDefs() {
 	uint16 numTypes = s->readUint16();
 
 	delete[] _itemTypes;
-	_itemTypes = new EoBItemType[65];
-	memset(_itemTypes, 0, sizeof(EoBItemType) * 65);
+	_itemTypes = new EoBItemType[65]();
 
 	for (int i = 0; i < numTypes; i++) {
 		_itemTypes[i].invFlags = s->readUint16();
diff --git a/engines/kyra/engine/items_v2.cpp b/engines/kyra/engine/items_v2.cpp
index 93afff62aa..9ae702692d 100644
--- a/engines/kyra/engine/items_v2.cpp
+++ b/engines/kyra/engine/items_v2.cpp
@@ -28,9 +28,8 @@ namespace Kyra {
 void KyraEngine_v2::initItemList(int size) {
 	delete[] _itemList;
 
-	_itemList = new ItemDefinition[size];
+	_itemList = new ItemDefinition[size]();
 	assert(_itemList);
-	memset(_itemList, 0, sizeof(ItemDefinition)*size);
 	_itemListSize = size;
 
 	resetItemList();
diff --git a/engines/kyra/engine/kyra_hof.cpp b/engines/kyra/engine/kyra_hof.cpp
index 91d02d18bc..8a104727eb 100644
--- a/engines/kyra/engine/kyra_hof.cpp
+++ b/engines/kyra/engine/kyra_hof.cpp
@@ -326,10 +326,8 @@ void KyraEngine_HoF::startup() {
 
 	_screen->_curPage = 0;
 
-	_talkObjectList = new TalkObject[72];
-	memset(_talkObjectList, 0, sizeof(TalkObject)*72);
-	_shapeDescTable = new ShapeDesc[55];
-	memset(_shapeDescTable, 0, sizeof(ShapeDesc)*55);
+	_talkObjectList = new TalkObject[72]();
+	_shapeDescTable = new ShapeDesc[55]();
 
 	for (int i = 9; i <= 32; ++i) {
 		_shapeDescTable[i-9].width = 30;
@@ -367,8 +365,7 @@ void KyraEngine_HoF::startup() {
 	for (int i = 0; i < 23; ++i)
 		resetCauldronStateTable(i);
 
-	_sceneList = new SceneDesc[86];
-	memset(_sceneList, 0, sizeof(SceneDesc)*86);
+	_sceneList = new SceneDesc[86]();
 	_sceneListSize = 86;
 	runStartScript(1, 0);
 	loadNPCScript();
diff --git a/engines/kyra/engine/kyra_lok.cpp b/engines/kyra/engine/kyra_lok.cpp
index de8fc6b7d5..f31704b880 100644
--- a/engines/kyra/engine/kyra_lok.cpp
+++ b/engines/kyra/engine/kyra_lok.cpp
@@ -207,9 +207,8 @@ Common::Error KyraEngine_LoK::init() {
 
 	_paletteChanged = 1;
 	_currentCharacter = 0;
-	_characterList = new Character[11];
+	_characterList = new Character[11]();
 	assert(_characterList);
-	memset(_characterList, 0, sizeof(Character) * 11);
 
 	for (int i = 0; i < 11; ++i)
 		memset(_characterList[i].inventoryItems, 0xFF, sizeof(_characterList[i].inventoryItems));
@@ -367,10 +366,8 @@ void KyraEngine_LoK::startup() {
 		_shapes[361 + i] = new byte[size];
 	}
 
-	_itemBkgBackUp[0] = new uint8[_screen->getRectSize(3, 24)];
-	memset(_itemBkgBackUp[0], 0, _screen->getRectSize(3, 24));
-	_itemBkgBackUp[1] = new uint8[_screen->getRectSize(4, 32)];
-	memset(_itemBkgBackUp[1], 0, _screen->getRectSize(4, 32));
+	_itemBkgBackUp[0] = new uint8[_screen->getRectSize(3, 24)]();
+	_itemBkgBackUp[1] = new uint8[_screen->getRectSize(4, 32)]();
 
 	for (int i = 0; i < _roomTableSize; ++i) {
 		for (int item = 0; item < 12; ++item) {
diff --git a/engines/kyra/engine/kyra_mr.cpp b/engines/kyra/engine/kyra_mr.cpp
index f4ef5f2025..06105d4cdd 100644
--- a/engines/kyra/engine/kyra_mr.cpp
+++ b/engines/kyra/engine/kyra_mr.cpp
@@ -568,8 +568,7 @@ void KyraEngine_MR::startup() {
 
 	_screen->_curPage = 0;
 
-	_talkObjectList = new TalkObject[88];
-	memset(_talkObjectList, 0, sizeof(TalkObject)*88);
+	_talkObjectList = new TalkObject[88]();
 	for (int i = 0; i < 88; ++i)
 		_talkObjectList[i].sceneId = 0xFF;
 
@@ -603,9 +602,8 @@ void KyraEngine_MR::startup() {
 	memset(_newSceneDlgState, 0, sizeof(_newSceneDlgState));
 	memset(_conversationState, -1, sizeof(_conversationState));
 
-	_sceneList = new SceneDesc[98];
+	_sceneList = new SceneDesc[98]();
 	assert(_sceneList);
-	memset(_sceneList, 0, sizeof(SceneDesc)*98);
 	_sceneListSize = 98;
 
 	runStartupScript(1, 0);
diff --git a/engines/kyra/engine/kyra_rpg.cpp b/engines/kyra/engine/kyra_rpg.cpp
index ebbf59f6c6..1f604b37d1 100644
--- a/engines/kyra/engine/kyra_rpg.cpp
+++ b/engines/kyra/engine/kyra_rpg.cpp
@@ -168,34 +168,23 @@ KyraRpgEngine::~KyraRpgEngine() {
 Common::Error KyraRpgEngine::init() {
 	gui_resetButtonList();
 
-	_levelDecorationProperties = new LevelDecorationProperty[100];
-	memset(_levelDecorationProperties, 0, 100 * sizeof(LevelDecorationProperty));
+	_levelDecorationProperties = new LevelDecorationProperty[100]();
 	_levelDecorationShapes = new const uint8*[400];
 	memset(_levelDecorationShapes, 0, 400 * sizeof(uint8 *));
-	_levelBlockProperties = new LevelBlockProperty[1025];
-	memset(_levelBlockProperties, 0, 1025 * sizeof(LevelBlockProperty));
-
-	_wllVmpMap = new uint8[256];
-	memset(_wllVmpMap, 0, 256);
-	_wllShapeMap = new int8[256];
-	memset(_wllShapeMap, 0, 256);
-	_specialWallTypes = new uint8[256];
-	memset(_specialWallTypes, 0, 256);
-	_wllWallFlags = new uint8[256];
-	memset(_wllWallFlags, 0, 256);
-
-	_blockDrawingBuffer = new uint16[1320];
-	memset(_blockDrawingBuffer, 0, 1320 * sizeof(uint16));
+	_levelBlockProperties = new LevelBlockProperty[1025]();
+
+	_wllVmpMap = new uint8[256]();
+	_wllShapeMap = new int8[256]();
+	_specialWallTypes = new uint8[256]();
+	_wllWallFlags = new uint8[256]();
+
+	_blockDrawingBuffer = new uint16[1320]();
 	int windowBufferSize = _flags.useHiColorMode ? 42240 : 21120;
-	_sceneWindowBuffer = new uint8[windowBufferSize];
-	memset(_sceneWindowBuffer, 0, windowBufferSize);
+	_sceneWindowBuffer = new uint8[windowBufferSize]();
 
-	_lvlShapeTop = new int16[18];
-	memset(_lvlShapeTop, 0, 18 * sizeof(int16));
-	_lvlShapeBottom = new int16[18];
-	memset(_lvlShapeBottom, 0, 18 * sizeof(int16));
-	_lvlShapeLeftRight = new int16[36];
-	memset(_lvlShapeLeftRight, 0, 36 * sizeof(int16));
+	_lvlShapeTop = new int16[18]();
+	_lvlShapeBottom = new int16[18]();
+	_lvlShapeLeftRight = new int16[36]();
 
 	_vcnColTable = new uint8[128];
 	for (int i = 0; i < 128; i++)
@@ -211,8 +200,7 @@ Common::Error KyraRpgEngine::init() {
 		_vcnDrawLine = new VcnLineDrawingMethods(new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_fw_4bit), new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_bw_4bit),
 			new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_fw_trans_4bit), new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_bw_trans_4bit));
 
-	_doorShapes = new uint8*[6];
-	memset(_doorShapes, 0, 6 * sizeof(uint8 *));
+	_doorShapes = new uint8*[6]();
 
 	initStaticResource();
 
diff --git a/engines/kyra/engine/lol.cpp b/engines/kyra/engine/lol.cpp
index 0748461129..36e47c74d0 100644
--- a/engines/kyra/engine/lol.cpp
+++ b/engines/kyra/engine/lol.cpp
@@ -379,37 +379,28 @@ Common::Error LoLEngine::init() {
 	_screen->setAnimBlockPtr(10000);
 	_screen->setScreenDim(0);
 
-	_pageBuffer1 = new uint8[0xFA00];
-	memset(_pageBuffer1, 0, 0xFA00);
-	_pageBuffer2 = new uint8[0xFA00];
-	memset(_pageBuffer2, 0, 0xFA00);
+	_pageBuffer1 = new uint8[0xFA00]();
+	_pageBuffer2 = new uint8[0xFA00]();
 
-	_itemsInPlay = new LoLItem[400];
-	memset(_itemsInPlay, 0, sizeof(LoLItem) * 400);
+	_itemsInPlay = new LoLItem[400]();
 
-	_characters = new LoLCharacter[4];
-	memset(_characters, 0, sizeof(LoLCharacter) * 4);
+	_characters = new LoLCharacter[4]();
 
 	if (!_sound->init())
 		error("Couldn't init sound");
 
 	KyraRpgEngine::init();
 
-	_wllAutomapData = new uint8[80];
-	memset(_wllAutomapData, 0, 80);
+	_wllAutomapData = new uint8[80]();
 
-	_monsters = new LoLMonster[30];
-	memset(_monsters, 0, 30 * sizeof(LoLMonster));
-	_monsterProperties = new LoLMonsterProperty[5];
-	memset(_monsterProperties, 0, 5 * sizeof(LoLMonsterProperty));
+	_monsters = new LoLMonster[30]();
+	_monsterProperties = new LoLMonsterProperty[5]();
 
-	_tempBuffer5120 = new uint8[5120];
-	memset(_tempBuffer5120, 0, 5120);
+	_tempBuffer5120 = new uint8[5120]();
 
-	_flyingObjects = new FlyingObject[_numFlyingObjects];
+	_flyingObjects = new FlyingObject[_numFlyingObjects]();
 	_flyingObjectsPtr = _flyingObjects;
 	_flyingObjectStructSize = sizeof(FlyingObject);
-	memset(_flyingObjects, 0, _numFlyingObjects * sizeof(FlyingObject));
 
 	memset(_globalScriptVars, 0, sizeof(_globalScriptVars));
 
@@ -422,12 +413,9 @@ Common::Error LoLEngine::init() {
 	_clickedShapeYOffs = 8;
 	_clickedSpecialFlag = 0x40;
 
-	_monsterShapes = new uint8*[48];
-	memset(_monsterShapes, 0, 48 * sizeof(uint8 *));
-	_monsterPalettes = new uint8*[48];
-	memset(_monsterPalettes, 0, 48 * sizeof(uint8 *));
-	_monsterDecorationShapes = new uint8*[576];
-	memset(_monsterDecorationShapes, 0, 576 * sizeof(uint8 *));
+	_monsterShapes = new uint8*[48]();
+	_monsterPalettes = new uint8*[48]();
+	_monsterDecorationShapes = new uint8*[576]();
 	memset(&_scriptData, 0, sizeof(EMCData));
 
 	_activeMagicMenu = -1;
diff --git a/engines/kyra/engine/scene_eob.cpp b/engines/kyra/engine/scene_eob.cpp
index e307d8dc9a..50a19391e1 100644
--- a/engines/kyra/engine/scene_eob.cpp
+++ b/engines/kyra/engine/scene_eob.cpp
@@ -425,8 +425,7 @@ void EoBCoreEngine::loadDecorations(const char *cpsFile, const char *decFile) {
 
 	_levelDecorationDataSize = s->readUint16();
 	delete[] _levelDecorationData;
-	_levelDecorationData = new LevelDecorationProperty[_levelDecorationDataSize];
-	memset(_levelDecorationData, 0, _levelDecorationDataSize * sizeof(LevelDecorationProperty));
+	_levelDecorationData = new LevelDecorationProperty[_levelDecorationDataSize]();
 
 	for (int i = 0; i < _levelDecorationDataSize; i++) {
 		LevelDecorationProperty *l = &_levelDecorationData[i];
diff --git a/engines/kyra/engine/sprites.cpp b/engines/kyra/engine/sprites.cpp
index 197d8eab4e..c0e945a869 100644
--- a/engines/kyra/engine/sprites.cpp
+++ b/engines/kyra/engine/sprites.cpp
@@ -110,9 +110,8 @@ void Sprites::setupSceneAnims() {
 			if (_anims[i].height2 > 0)
 				bkgdHeight += _anims[i].height2;
 
-			_anims[i].background = new uint8[_screen->getRectSize(bkgdWidth + 1, bkgdHeight)];
+			_anims[i].background = new uint8[_screen->getRectSize(bkgdWidth + 1, bkgdHeight)]();
 			assert(_anims[i].background);
-			memset(_anims[i].background, 0, _screen->getRectSize(bkgdWidth + 1, bkgdHeight));
 		}
 	}
 }
diff --git a/engines/kyra/engine/sprites_lol.cpp b/engines/kyra/engine/sprites_lol.cpp
index 66c0660048..f7f1b2cd12 100644
--- a/engines/kyra/engine/sprites_lol.cpp
+++ b/engines/kyra/engine/sprites_lol.cpp
@@ -73,10 +73,9 @@ void LoLEngine::loadMonsterShapes(const char *file, int monsterIndex, int animTy
 	_screen->clearPage(3);
 	_screen->drawShape(2, palShape, 0, 0, 0, 0);
 
-	uint8 *tmpPal1 = new uint8[64];
+	uint8 *tmpPal1 = new uint8[64]();
 	uint8 *tmpPal2 = new uint8[256];
 	uint16 *tmpPal3 = new uint16[256];
-	memset(tmpPal1, 0, 64);
 
 	for (int i = 0; i < 64; i++) {
 		tmpPal1[i] = *p;
diff --git a/engines/kyra/graphics/animator_lok.cpp b/engines/kyra/graphics/animator_lok.cpp
index 9f4236b32b..8fbd073e81 100644
--- a/engines/kyra/graphics/animator_lok.cpp
+++ b/engines/kyra/graphics/animator_lok.cpp
@@ -35,10 +35,8 @@ Animator_LoK::Animator_LoK(KyraEngine_LoK *vm, OSystem *system) {
 	_screenObjects = _actors = _items = _sprites = _objectQueue = 0;
 	_noDrawShapesFlag = 0;
 
-	_actorBkgBackUp[0] = new uint8[_screen->getRectSize(8, 69)];
-	memset(_actorBkgBackUp[0], 0, _screen->getRectSize(8, 69));
-	_actorBkgBackUp[1] = new uint8[_screen->getRectSize(8, 69)];
-	memset(_actorBkgBackUp[1], 0, _screen->getRectSize(8, 69));
+	_actorBkgBackUp[0] = new uint8[_screen->getRectSize(8, 69)]();
+	_actorBkgBackUp[1] = new uint8[_screen->getRectSize(8, 69)]();
 }
 
 Animator_LoK::~Animator_LoK() {
@@ -48,9 +46,8 @@ Animator_LoK::~Animator_LoK() {
 }
 
 void Animator_LoK::init(int actors_, int items_, int sprites_) {
-	_screenObjects = new AnimObject[actors_ + items_ + sprites_];
+	_screenObjects = new AnimObject[actors_ + items_ + sprites_]();
 	assert(_screenObjects);
-	memset(_screenObjects, 0, sizeof(AnimObject) * (actors_ + items_ + sprites_));
 	_actors = _screenObjects;
 	_sprites = &_screenObjects[actors_];
 	_items = &_screenObjects[actors_ + items_];
diff --git a/engines/kyra/graphics/animator_tim.cpp b/engines/kyra/graphics/animator_tim.cpp
index 160524e6ca..3ed6ddb449 100644
--- a/engines/kyra/graphics/animator_tim.cpp
+++ b/engines/kyra/graphics/animator_tim.cpp
@@ -39,13 +39,11 @@ TimAnimator::TimAnimator(LoLEngine *engine, Screen_v2 *screen_v2, OSystem *syste
 #else
 TimAnimator::TimAnimator(KyraEngine_v1 *engine, Screen_v2 *screen_v2, OSystem *system, bool useParts) : _vm(engine), _screen(screen_v2), _system(system), _useParts(useParts) {
 #endif
-	_animations = new Animation[TIM::kWSASlots];
-	memset(_animations, 0, TIM::kWSASlots * sizeof(Animation));
+	_animations = new Animation[TIM::kWSASlots]();
 
 	if (_useParts) {
 		for (int i = 0; i < TIM::kWSASlots; i++) {
-			_animations[i].parts = new AnimPart[TIM::kAnimParts];
-			memset(_animations[i].parts, 0, TIM::kAnimParts * sizeof(AnimPart));
+			_animations[i].parts = new AnimPart[TIM::kAnimParts]();
 		}
 	}
 }
diff --git a/engines/kyra/graphics/animator_v2.cpp b/engines/kyra/graphics/animator_v2.cpp
index a7a8d70962..6cda7cc84e 100644
--- a/engines/kyra/graphics/animator_v2.cpp
+++ b/engines/kyra/graphics/animator_v2.cpp
@@ -26,11 +26,9 @@
 namespace Kyra {
 
 void KyraEngine_v2::allocAnimObjects(int actors, int anims, int items) {
-	_animObjects = new AnimObj[actors + anims + items];
+	_animObjects = new AnimObj[actors + anims + items]();
 	assert(_animObjects);
 
-	memset(_animObjects, 0, sizeof(AnimObj) * (actors + anims + items));
-
 	_animActor = _animObjects;
 	_animAnims = _animObjects + actors;
 	_animItems = _animObjects + actors + anims;
diff --git a/engines/kyra/graphics/screen.cpp b/engines/kyra/graphics/screen.cpp
index 5dd924d9ab..16e3fc9bd2 100644
--- a/engines/kyra/graphics/screen.cpp
+++ b/engines/kyra/graphics/screen.cpp
@@ -526,8 +526,7 @@ void Screen::resetPagePtrsAndBuffers(int pageSize) {
 	int numPages = realPages.size();
 	uint32 bufferSize = numPages * _screenPageSize;
 
-	uint8 *pagePtr = new uint8[bufferSize];
-	memset(pagePtr, 0, bufferSize);
+	uint8 *pagePtr = new uint8[bufferSize]();
 
 	memset(_pagePtrs, 0, sizeof(_pagePtrs));
 	for (int i = 0; i < SCREEN_PAGE_NUM; i++) {
@@ -1294,9 +1293,8 @@ void Screen::drawLine(bool vertical, int x, int y, int length, int color) {
 
 void Screen::setAnimBlockPtr(int size) {
 	delete[] _animBlockPtr;
-	_animBlockPtr = new uint8[size];
+	_animBlockPtr = new uint8[size]();
 	assert(_animBlockPtr);
-	memset(_animBlockPtr, 0, size);
 	_animBlockSize = size;
 }
 
@@ -3843,10 +3841,8 @@ void SJISFont::drawChar(uint16 c, byte *dst, int pitch, int) const {
 #pragma mark -
 
 Palette::Palette(const int numColors) : _palData(0), _numColors(numColors) {
-	_palData = new uint8[numColors * 3];
+	_palData = new uint8[numColors * 3]();
 	assert(_palData);
-
-	memset(_palData, 0, numColors * 3);
 }
 
 Palette::~Palette() {
diff --git a/engines/kyra/graphics/screen_eob.cpp b/engines/kyra/graphics/screen_eob.cpp
index 666ac7adf6..b56c05b775 100644
--- a/engines/kyra/graphics/screen_eob.cpp
+++ b/engines/kyra/graphics/screen_eob.cpp
@@ -117,24 +117,19 @@ bool Screen_EoB::init() {
 				_egaDitheringTable[i] = i & 0x0F;
 		} else if (_renderMode == Common::kRenderCGA) {
 			_cgaMappingDefault = _vm->staticres()->loadRawData(kEoB1CgaMappingDefault, temp);
-			_cgaDitheringTables[0] = new uint16[256];
-			memset(_cgaDitheringTables[0], 0, 256 * sizeof(uint16));
-			_cgaDitheringTables[1] = new uint16[256];
-			memset(_cgaDitheringTables[1], 0, 256 * sizeof(uint16));
+			_cgaDitheringTables[0] = new uint16[256]();
+			_cgaDitheringTables[1] = new uint16[256]();
 
-			_cgaScaleTable = new uint8[256];
-			memset(_cgaScaleTable, 0, 256 * sizeof(uint8));
+			_cgaScaleTable = new uint8[256]();
 			for (int i = 0; i < 256; i++)
 				_cgaScaleTable[i] = ((i & 0xF0) >> 2) | (i & 0x03);
 		} else if (_vm->gameFlags().platform == Common::kPlatformSegaCD) {
 			sega_initGraphics();
-			_segaCustomPalettes = new uint16[128];
+			_segaCustomPalettes = new uint16[128]();
 			_palFaders = new PaletteFader[4];
 			_defaultRenderBufferSize = SCREEN_W * _screenHeight;
-			_defaultRenderBuffer = new uint8[_defaultRenderBufferSize];
-			memset(_defaultRenderBuffer, 0, _defaultRenderBufferSize);
+			_defaultRenderBuffer = new uint8[_defaultRenderBufferSize]();
 			sega_setTextBuffer(0, 0);
-			memset(_segaCustomPalettes, 0, 128 * sizeof(uint16));
 		}
 
 		_useShapeShading = (_bytesPerPixel != 2 && !_isAmiga && !_isSegaCD && !_use16ColorMode && _renderMode != Common::kRenderCGA && _renderMode != Common::kRenderEGA) || _useHiResEGADithering;
@@ -143,8 +138,7 @@ bool Screen_EoB::init() {
 		int ci = 0;
 		if (_vm->game() == GI_EOB1) {
 			if (_vm->gameFlags().platform == Common::kPlatformPC98) {
-				_cyclePalette = new uint8[48];
-				memset(_cyclePalette, 0, 48);
+				_cyclePalette = new uint8[48]();
 				ci = 3;
 			} else if (_renderMode == Common::kRenderEGA || _renderMode == Common::kRenderCGA) {
 				ci = 1;
@@ -481,8 +475,7 @@ uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool enco
 
 	if (_bytesPerPixel == 2 && encode8bit) {
 		shapesize = h * (w << 3) + 4;
-		shp = new uint8[shapesize];
-		memset(shp, 0, shapesize);
+		shp = new uint8[shapesize]();
 		uint8 *dst = shp;
 
 		*dst++ = 0;
@@ -502,8 +495,7 @@ uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool enco
 		if (cgaMapping)
 			generateCGADitheringTables(cgaMapping);
 		shapesize = h * (w << 2) + 4;
-		shp = new uint8[shapesize];
-		memset(shp, 0, shapesize);
+		shp = new uint8[shapesize]();
 		uint8 *dst = shp;
 
 		*dst++ = 4;
@@ -561,8 +553,7 @@ uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool enco
 
 		shapesize += 4;
 
-		shp = new uint8[shapesize];
-		memset(shp, 0, shapesize);
+		shp = new uint8[shapesize]();
 		uint8 *dst = shp;
 
 		*dst++ = 1;
@@ -610,8 +601,7 @@ uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool enco
 		}
 
 		shapesize = h * (w << 2) + 20;
-		shp = new uint8[shapesize];
-		memset(shp, 0, shapesize);
+		shp = new uint8[shapesize]();
 		uint8 *dst = shp;
 
 		*dst++ = 2;
@@ -1811,8 +1801,7 @@ OldDOSFont::OldDOSFont(Common::RenderMode mode, uint8 shadowColor) : _renderMode
 
 	_numRef++;
 	if (!_cgaDitheringTable && _numRef == 1) {
-		_cgaDitheringTable = new uint16[256];
-		memset(_cgaDitheringTable, 0, 256 * sizeof(uint16));
+		_cgaDitheringTable = new uint16[256]();
 		static const uint bits[] = { 0, 3, 12, 15 };
 		for (int i = 0; i < 256; i++)
 			_cgaDitheringTable[i] = (bits[i & 3] << 8) | (bits[(i >> 2) & 3] << 12) | (bits[(i >> 4) & 3] << 0) | (bits[(i >> 6) & 3] << 4);
diff --git a/engines/kyra/graphics/screen_eob_segacd.cpp b/engines/kyra/graphics/screen_eob_segacd.cpp
index f30432feef..d5f8ef2145 100644
--- a/engines/kyra/graphics/screen_eob_segacd.cpp
+++ b/engines/kyra/graphics/screen_eob_segacd.cpp
@@ -391,12 +391,10 @@ SegaRenderer::SegaRenderer(Screen_EoB *screen) : _screen(screen), _prioChainStar
 , _renderLineFragmentD(0), _renderLineFragmentM(0)
 #endif
 {
-	_vram = new uint8[0x10000];
+	_vram = new uint8[0x10000]();
 	assert(_vram);
-	memset(_vram, 0, 0x10000 * sizeof(uint8));
-	_vsram = new uint16[40];
+	_vsram = new uint16[40]();
 	assert(_vsram);
-	memset(_vsram, 0, 40 * sizeof(uint16));
 
 #if SEGA_PERFORMANCE
 	static const SegaRenderer::renderFuncD funcD[8] = {
@@ -445,9 +443,8 @@ void SegaRenderer::setResolution(int w, int h) {
 	_numSpritesMax = w >> 2;
 
 	delete[] _spriteMask;
-	_spriteMask = new uint8[w * h];
+	_spriteMask = new uint8[w * h]();
 	assert(_spriteMask);
-	memset(_spriteMask, 0, w * h * sizeof(uint8));
 }
 
 void SegaRenderer::setPlaneTableLocation(int plane, uint16 addr) {
@@ -956,12 +953,10 @@ void SegaRenderer::clearPrioChain() {
 }
 
 SegaAnimator::SegaAnimator(SegaRenderer *renderer) : _renderer(renderer), _needUpdate(false) {
-	_sprites = new Sprite[80];
+	_sprites = new Sprite[80]();
 	assert(_sprites);
-	memset(_sprites, 0, sizeof(Sprite) * 80);
-	_tempBuffer = new uint16[320];
+	_tempBuffer = new uint16[320]();
 	assert(_tempBuffer);
-	memset(_tempBuffer, 0, sizeof(uint16) * 320);
 	int linkCnt = 1;
 	for (int i = 1; i < 317; i += 4)
 		_tempBuffer[i] = linkCnt++;
diff --git a/engines/kyra/graphics/screen_lok.cpp b/engines/kyra/graphics/screen_lok.cpp
index ec53f22cb4..48d60052c8 100644
--- a/engines/kyra/graphics/screen_lok.cpp
+++ b/engines/kyra/graphics/screen_lok.cpp
@@ -65,12 +65,10 @@ bool Screen_LoK::init() {
 	memset(_saveLoadPage, 0, sizeof(_saveLoadPage));
 	memset(_saveLoadPageOvl, 0, sizeof(_saveLoadPageOvl));
 
-	_unkPtr1 = new uint8[getRectSize(1, 144)];
+	_unkPtr1 = new uint8[getRectSize(1, 144)]();
 	assert(_unkPtr1);
-	memset(_unkPtr1, 0, getRectSize(1, 144));
-	_unkPtr2 = new uint8[getRectSize(1, 144)];
+	_unkPtr2 = new uint8[getRectSize(1, 144)]();
 	assert(_unkPtr2);
-	memset(_unkPtr2, 0, getRectSize(1, 144));
 
 	return true;
 }
diff --git a/engines/kyra/graphics/screen_lol.cpp b/engines/kyra/graphics/screen_lol.cpp
index b42565fc9d..dfe6d23d79 100644
--- a/engines/kyra/graphics/screen_lol.cpp
+++ b/engines/kyra/graphics/screen_lol.cpp
@@ -32,12 +32,9 @@
 namespace Kyra {
 
 Screen_LoL::Screen_LoL(LoLEngine *vm, OSystem *system) : Screen_v2(vm, system,  vm->gameFlags().use16ColorMode ? _screenDimTable16C : _screenDimTable256C, _screenDimTableCount) {
-	_paletteOverlay1 = new uint8[0x100];
-	_paletteOverlay2 = new uint8[0x100];
-	_grayOverlay = new uint8[0x100];
-	memset(_paletteOverlay1, 0, 0x100);
-	memset(_paletteOverlay2, 0, 0x100);
-	memset(_grayOverlay, 0, 0x100);
+	_paletteOverlay1 = new uint8[0x100]();
+	_paletteOverlay2 = new uint8[0x100]();
+	_grayOverlay = new uint8[0x100]();
 
 	for (int i = 0; i < 8; i++)
 		_levelOverlays[i] = new uint8[256];
diff --git a/engines/kyra/graphics/vqa.cpp b/engines/kyra/graphics/vqa.cpp
index 40e927db56..f15d545499 100644
--- a/engines/kyra/graphics/vqa.cpp
+++ b/engines/kyra/graphics/vqa.cpp
@@ -414,16 +414,12 @@ VQADecoder::VQAVideoTrack::VQAVideoTrack(const VQAHeader *header) {
 
 	_codeBookSize = 0xF00 * header->blockW * header->blockH;
 	_compressedCodeBook = false;
-	_codeBook = new byte[_codeBookSize];
+	_codeBook = new byte[_codeBookSize]();
 	_partialCodeBookSize = 0;
 	_numPartialCodeBooks = 0;
-	_partialCodeBook = new byte[_codeBookSize];
+	_partialCodeBook = new byte[_codeBookSize]();
 	_numVectorPointers = (header->width / header->blockW) * (header->height * header->blockH);
-	_vectorPointers = new uint16[_numVectorPointers];
-
-	memset(_codeBook, 0, _codeBookSize);
-	memset(_partialCodeBook, 0, _codeBookSize);
-	memset(_vectorPointers, 0, _numVectorPointers);
+	_vectorPointers = new uint16[_numVectorPointers]();
 
 	_surface = new Graphics::Surface();
 	_surface->create(header->width, header->height, Graphics::PixelFormat::createFormatCLUT8());
diff --git a/engines/kyra/graphics/wsamovie.cpp b/engines/kyra/graphics/wsamovie.cpp
index 6cbda7b6c9..92f85d4c86 100644
--- a/engines/kyra/graphics/wsamovie.cpp
+++ b/engines/kyra/graphics/wsamovie.cpp
@@ -67,8 +67,7 @@ int WSAMovie_v1::open(const char *filename, int offscreenDecode, Palette *palBuf
 	if (offscreenDecode) {
 		_flags |= WF_OFFSCREEN_DECODE;
 		const int offscreenBufferSize = _width * _height;
-		_offscreenBuffer = new uint8[offscreenBufferSize];
-		memset(_offscreenBuffer, 0, offscreenBufferSize);
+		_offscreenBuffer = new uint8[offscreenBufferSize]();
 	}
 
 	if (_numFrames & 0x8000) {
@@ -80,8 +79,7 @@ int WSAMovie_v1::open(const char *filename, int offscreenDecode, Palette *palBuf
 	}
 	_currentFrame = _numFrames;
 
-	_deltaBuffer = new uint8[_deltaBufferSize];
-	memset(_deltaBuffer, 0, _deltaBufferSize);
+	_deltaBuffer = new uint8[_deltaBufferSize]();
 
 	// read frame offsets
 	_frameOffsTable = new uint32[_numFrames + 2];
@@ -406,8 +404,7 @@ int WSAMovie_v2::open(const char *filename, int unk1, Palette *palBuf) {
 	if (!(unk1 & 2)) {
 		_flags |= WF_OFFSCREEN_DECODE;
 		const int offscreenBufferSize = _width * _height;
-		_offscreenBuffer = new uint8[offscreenBufferSize];
-		memset(_offscreenBuffer, 0, offscreenBufferSize);
+		_offscreenBuffer = new uint8[offscreenBufferSize]();
 	}
 
 	if (_numFrames & 0x8000) {
@@ -417,8 +414,7 @@ int WSAMovie_v2::open(const char *filename, int unk1, Palette *palBuf) {
 	}
 	_currentFrame = _numFrames;
 
-	_deltaBuffer = new uint8[_deltaBufferSize];
-	memset(_deltaBuffer, 0, _deltaBufferSize);
+	_deltaBuffer = new uint8[_deltaBufferSize]();
 
 	// read frame offsets
 	_frameOffsTable = new uint32[_numFrames + 2];
diff --git a/engines/kyra/gui/gui.cpp b/engines/kyra/gui/gui.cpp
index 3afa4128ba..3b8f2c66c5 100644
--- a/engines/kyra/gui/gui.cpp
+++ b/engines/kyra/gui/gui.cpp
@@ -109,8 +109,7 @@ void GUI::updateSaveSlotsList(Common::String targetName, bool force) {
 		KyraEngine_v1::SaveHeader header;
 		Common::InSaveFile *in;
 
-		_savegameList = new char*[_savegameListSize];
-		memset(_savegameList, 0, _savegameListSize * sizeof(char *));
+		_savegameList = new char*[_savegameListSize]();
 
 		for (int i = 0; i < numSaves; i++) {
 			in = _vm->openSaveForReading(_vm->getSavegameFilename(targetName, _saveSlots[i]).c_str(), header, targetName == _vm->_targetName);
diff --git a/engines/kyra/gui/gui_eob.cpp b/engines/kyra/gui/gui_eob.cpp
index 4cc75d9011..eee3db2216 100644
--- a/engines/kyra/gui/gui_eob.cpp
+++ b/engines/kyra/gui/gui_eob.cpp
@@ -1502,13 +1502,11 @@ void EoBCoreEngine::gui_processInventorySlotClick(int slot) {
 }
 
 GUI_EoB::GUI_EoB(EoBCoreEngine *vm) : GUI(vm), _vm(vm), _screen(vm->_screen), _numSlotsVisible(vm->gameFlags().platform == Common::kPlatformSegaCD ? 5 : 6) {
-	_menuStringsPrefsTemp = new char*[4];
-	memset(_menuStringsPrefsTemp, 0, 4 * sizeof(char *));
+	_menuStringsPrefsTemp = new char*[4]();
 
 	_saveSlotStringsTemp = new char*[6];
 	for (int i = 0; i < 6; i++) {
-		_saveSlotStringsTemp[i] = new char[26];
-		memset(_saveSlotStringsTemp[i], 0, 26);
+		_saveSlotStringsTemp[i] = new char[26]();
 	}
 	_saveSlotIdTemp = new int16[7];
 	memset(_saveSlotIdTemp, 0xFF, sizeof(int16) * 7);
@@ -1532,8 +1530,7 @@ GUI_EoB::GUI_EoB(EoBCoreEngine *vm) : GUI(vm), _vm(vm), _screen(vm->_screen), _n
 	_numVisPages = (_vm->game() == GI_EOB2) ? 6 : 5;
 	_clericSpellAvltyFlags = (_vm->game() == GI_EOB2) ? 0xF7FFFFFF : 0x7BFFFF;
 	_paladinSpellAvltyFlags = (_vm->game() == GI_EOB2) ? 0xA9BBD1D : 0x800FF2;
-	_numAssignedSpellsOfType = new int8[72];
-	memset(_numAssignedSpellsOfType, 0, 72);
+	_numAssignedSpellsOfType = new int8[72]();
 
 	_charSelectRedraw = false;
 	_clickableCharactersPage = 0;
@@ -2709,8 +2706,7 @@ int GUI_EoB::getTextInput(char *dest, int x, int y, int destMaxLen, int textColo
 	uint8 cursorState = 1;
 	char sufx[3] = " \0";
 
-	uint8 *segaCharBuf = new uint8[destMaxLen << 5];
-	memset(segaCharBuf, 0, destMaxLen << 5);
+	uint8 *segaCharBuf = new uint8[destMaxLen << 5]();
 
 	int len = strlen(dest);
 	if (len > destMaxLen) {
@@ -3036,8 +3032,7 @@ Common::String GUI_EoB::transferTargetMenu(Common::Array<Common::String> &target
 	}
 
 	_savegameListSize = targets.size();
-	_savegameList = new char*[_savegameListSize];
-	memset(_savegameList, 0, _savegameListSize * sizeof(char *));
+	_savegameList = new char*[_savegameListSize]();
 
 	Common::StringArray::iterator ii = targets.begin();
 	for (int i = 0; i < _savegameListSize; ++i) {
@@ -3397,13 +3392,10 @@ void GUI_EoB::runMemorizePrayMenu(int charIndex, int spellType) {
 		}
 	}
 
-	int8 *menuSpellMap = new int8[88];
-	memset(menuSpellMap, 0, 88);
-	int8 *numAssignedSpellsPerBookPage = new int8[8];
-	memset(numAssignedSpellsPerBookPage, 0, 8);
+	int8 *menuSpellMap = new int8[88]();
+	int8 *numAssignedSpellsPerBookPage = new int8[8]();
 	memset(_numAssignedSpellsOfType, 0, 72);
-	int8 *lh = new int8[40];
-	memset(lh, 0, 40);
+	int8 *lh = new int8[40]();
 
 	memcpy(lh, spellType ? _vm->_spellLevelsCleric : _vm->_spellLevelsMage, spellType ? _vm->_spellLevelsClericSize : _vm->_spellLevelsMageSize);
 	int8 *charSpellList = spellType ? c->clericSpells : c->mageSpells;
diff --git a/engines/kyra/gui/saveload_eob.cpp b/engines/kyra/gui/saveload_eob.cpp
index ea25438f6d..46c3401921 100644
--- a/engines/kyra/gui/saveload_eob.cpp
+++ b/engines/kyra/gui/saveload_eob.cpp
@@ -856,14 +856,11 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) {
 		l->wallsXorData = new uint8[4096];
 		l->flags = new uint16[1024];
 		memset(l->flags, 0, 1024 * sizeof(uint16));
-		EoBMonsterInPlay *lm = new EoBMonsterInPlay[30];
-		memset(lm, 0, 30 * sizeof(EoBMonsterInPlay));
+		EoBMonsterInPlay *lm = new EoBMonsterInPlay[30]();
 		l->monsters = lm;
-		EoBFlyingObject *lf = new EoBFlyingObject[_numFlyingObjects];
-		memset(lf, 0, _numFlyingObjects * sizeof(EoBFlyingObject));
+		EoBFlyingObject *lf = new EoBFlyingObject[_numFlyingObjects]();
 		l->flyingObjects = lf;
-		WallOfForce *lw = new WallOfForce[5];
-		memset(lw, 0, 5 * sizeof(WallOfForce));
+		WallOfForce *lw = new WallOfForce[5]();
 		l->wallsOfForce = lw;
 
 		if (sourcePlatform == Common::kPlatformFMTowns) {
diff --git a/engines/kyra/resource/staticres_eob.cpp b/engines/kyra/resource/staticres_eob.cpp
index 6b81b8eebc..9447e0658a 100644
--- a/engines/kyra/resource/staticres_eob.cpp
+++ b/engines/kyra/resource/staticres_eob.cpp
@@ -84,8 +84,7 @@ bool StaticResource::loadEoB2ShapeData(Common::SeekableReadStream &stream, void
 bool StaticResource::loadEoBNpcData(Common::SeekableReadStream &stream, void *&ptr, int &size) {
 	size = stream.readUint16BE();
 
-	EoBCharacter *e = new EoBCharacter[size];
-	memset(e, 0, size * sizeof(EoBCharacter));
+	EoBCharacter *e = new EoBCharacter[size]();
 	EoBCharacter *s = e;
 
 	for (int i = 0; i < size; i++, s++) {
@@ -1264,8 +1263,7 @@ void EoBCoreEngine::initSpells() {
 	ec2(monster_causeCriticalWounds);
 	ec2(monster_fleshToStone);
 
-	_spells = new EoBSpell[_numSpells];
-	memset(_spells, 0, _numSpells * sizeof(EoBSpell));
+	_spells = new EoBSpell[_numSpells]();
 
 	for (int i = 0, n = 0; i < _numSpells; i++, n++) {
 		EoBSpell *s = &_spells[i];
@@ -1353,8 +1351,7 @@ void EoBEngine::initStaticResource() {
 
 	const uint8 *ps = _staticres->loadRawData(kEoB1MonsterProperties, temp);
 	temp /= 27;
-	_monsterProps = new EoBMonsterProperty[temp];
-	memset(_monsterProps, 0, temp * sizeof(EoBMonsterProperty));
+	_monsterProps = new EoBMonsterProperty[temp]();
 	// Convert EOB1 (hard coded) monster properties to EOB2 type monster properties.
 	for (int i = 0; i < temp; i++) {
 		EoBMonsterProperty *p = &_monsterProps[i];
diff --git a/engines/kyra/script/script_eob.cpp b/engines/kyra/script/script_eob.cpp
index 9e31a9c5f5..ac4835f82f 100644
--- a/engines/kyra/script/script_eob.cpp
+++ b/engines/kyra/script/script_eob.cpp
@@ -137,15 +137,12 @@ EoBInfProcessor::EoBInfProcessor(EoBCoreEngine *engine, Screen_EoB *screen) : _v
 	_lastScriptFunc = 0;
 	_lastScriptFlags = 0;
 
-	_subroutineStack = new int8*[10];
-	memset(_subroutineStack, 0, 10 * sizeof(int8 *));
+	_subroutineStack = new int8*[10]();
 	_subroutineStackPos = 0;
 
-	_flagTable = new uint32[18];
-	memset(_flagTable, 0, 18 * sizeof(uint32));
+	_flagTable = new uint32[18]();
 
-	_stack = new int16[30];
-	memset(_stack, 0, 30 * sizeof(int16));
+	_stack = new int16[30]();
 	_stackIndex = 0;
 
 	_activeCharacter = -1;
diff --git a/engines/kyra/sequence/seqplayer_eob_segacd.cpp b/engines/kyra/sequence/seqplayer_eob_segacd.cpp
index 03bd9d8130..995adf11f0 100644
--- a/engines/kyra/sequence/seqplayer_eob_segacd.cpp
+++ b/engines/kyra/sequence/seqplayer_eob_segacd.cpp
@@ -80,27 +80,21 @@ SegaSequencePlayer::SegaSequencePlayer(EoBEngine *vm, Screen_EoB *screen, SegaCD
 
 	_scrollManager = new ScrollManager(_renderer);
 	assert(_scrollManager);
-	_tileSets = new TileSet[100];
+	_tileSets = new TileSet[100]();
 	assert(_tileSets);
-	memset(_tileSets, 0, 100 * sizeof(TileSet));
-	_drawObjects = new DrawObject[100];
+	_drawObjects = new DrawObject[100]();
 	assert(_drawObjects);
-	memset(_drawObjects, 0, 100 * sizeof(DrawObject));
 
 	memset(_speechAnimDrawOps, 0, sizeof(_speechAnimDrawOps));
 
-	_scaleSrcBuffer = new uint8[0x5800];
+	_scaleSrcBuffer = new uint8[0x5800]();
 	assert(_scaleSrcBuffer);
-	memset(_scaleSrcBuffer, 0, 0x5800 * sizeof(uint8));
-	_scaleOutBuffer = new uint8[0x5800];
+	_scaleOutBuffer = new uint8[0x5800]();
 	assert(_scaleOutBuffer);
-	memset(_scaleOutBuffer, 0, 0x5800 * sizeof(uint8));
-	_scaleStampMap = new uint16[0x100];
+	_scaleStampMap = new uint16[0x100]();
 	assert(_scaleStampMap);
-	memset(_scaleStampMap, 0, 0x100 * sizeof(uint16));
-	_scaleTraceVectors = new uint16[0x580];
+	_scaleTraceVectors = new uint16[0x580]();
 	assert(_scaleTraceVectors);
-	memset(_scaleTraceVectors, 0, 0x580 * sizeof(uint16));
 
 	int temp;
 	_wdDsX = _vm->staticres()->loadRawDataBe16(kEoB1IntroWdDsX, temp);
diff --git a/engines/kyra/sequence/sequences_eob.cpp b/engines/kyra/sequence/sequences_eob.cpp
index d0ec693ffc..1e8080947a 100644
--- a/engines/kyra/sequence/sequences_eob.cpp
+++ b/engines/kyra/sequence/sequences_eob.cpp
@@ -196,8 +196,7 @@ EoBSeqPlayerCommon::EoBSeqPlayerCommon(EoBEngine *vm, Screen_EoB *screen) : _vm(
 	_fillColor1(vm->gameFlags().platform == Common::kPlatformAmiga ? 19 : (vm->gameFlags().platform == Common::kPlatformPC98 ? 0 : 12)),
 	_fillColor2(vm->gameFlags().platform == Common::kPlatformAmiga ? 10 : 157), _tickLength(16),
 	_textFont(vm->gameFlags().platform == Common::kPlatformPC98 ? Screen::FID_SJIS_TEXTMODE_FNT : Screen::FID_8_FNT) {
-	_shapes = new uint8*[64];
-	memset(_shapes, 0, 64 * sizeof(uint8*));
+	_shapes = new uint8*[64]();
 }
 
 EoBSeqPlayerCommon::~EoBSeqPlayerCommon() {
@@ -2456,8 +2455,7 @@ void EoBEngine::seq_xdeath() {
 		((int16*)scrollTable)[iii << 1] = ((int16*)scrollTable)[(iii << 1) + 1] = (iii & 1) ? -step : step;
 
 void EoBEngine::seq_segaOpeningCredits(bool jumpToTitle) {
-	uint16 *scrollTable = new uint16[0x200];
-	memset(scrollTable, 0, 0x200 * sizeof(uint16));
+	uint16 *scrollTable = new uint16[0x200]();
 	SegaRenderer *r = _screen->sega_getRenderer();
 
 	r->setPitch(128);
diff --git a/engines/kyra/sequence/sequences_lok.cpp b/engines/kyra/sequence/sequences_lok.cpp
index a473aef337..bedeec8b0d 100644
--- a/engines/kyra/sequence/sequences_lok.cpp
+++ b/engines/kyra/sequence/sequences_lok.cpp
@@ -1685,9 +1685,8 @@ int KyraEngine_LoK::handleBeadState() {
 				_beadState1.width = ((_beadState1.width2 + 7) >> 3) + 1;
 				_beadState1.height = _animator->fetchAnimHeight(_panPagesTable[19], 256);
 				if (!_endSequenceBackUpRect) {
-					_endSequenceBackUpRect = new uint8[(_beadState1.width * _beadState1.height) << 3];
+					_endSequenceBackUpRect = new uint8[(_beadState1.width * _beadState1.height) << 3]();
 					assert(_endSequenceBackUpRect);
-					memset(_endSequenceBackUpRect, 0, ((_beadState1.width * _beadState1.height) << 3) * sizeof(uint8));
 				}
 				x = _beadState1.x = 60;
 				y = _beadState1.y = 40;
diff --git a/engines/kyra/sequence/sequences_lol.cpp b/engines/kyra/sequence/sequences_lol.cpp
index 626c1cc254..177ecfc038 100644
--- a/engines/kyra/sequence/sequences_lol.cpp
+++ b/engines/kyra/sequence/sequences_lol.cpp
@@ -1309,9 +1309,8 @@ void LoLEngine::processCredits(char *t, int dimState, int page, int delayTime) {
 	bool needNewShape = false;
 	bool doorRedraw = true;
 
-	uint8 *animBlock = new uint8[40960];
+	uint8 *animBlock = new uint8[40960]();
 	assert(animBlock);
-	memset(animBlock, 0, 40960);
 	int inputFlag = 0;
 
 	do {
diff --git a/engines/kyra/sound/drivers/mlalf98.cpp b/engines/kyra/sound/drivers/mlalf98.cpp
index 9457603b27..2858b3eebf 100644
--- a/engines/kyra/sound/drivers/mlalf98.cpp
+++ b/engines/kyra/sound/drivers/mlalf98.cpp
@@ -894,8 +894,7 @@ uint16 MusicChannelFM::_frequency2 = 0;
 
 MusicChannelFM::MusicChannelFM(PC98AudioCore *pc98a, int part, int regOffset) : SoundChannelNonSSG(pc98a, part, regOffset, 0) {
 	if (!_registers) {
-		_registers = new uint8[512];
-		memset(_registers, 0, 512);
+		_registers = new uint8[512]();
 	}
 }
 
diff --git a/engines/kyra/text/text_eob_segacd.cpp b/engines/kyra/text/text_eob_segacd.cpp
index 73cfd30df9..bb39dd6325 100644
--- a/engines/kyra/text/text_eob_segacd.cpp
+++ b/engines/kyra/text/text_eob_segacd.cpp
@@ -33,8 +33,7 @@ TextDisplayer_SegaCD::TextDisplayer_SegaCD(EoBEngine *engine, Screen_EoB *scr) :
 	_curDim(0), _textColor(0xFF), _curPosY(0), _curPosX(0) {
 	assert(_renderer);
 	_msgRenderBufferSize = 320 * 48;
-	_msgRenderBuffer = new uint8[_msgRenderBufferSize];
-	memset(_msgRenderBuffer, 0, _msgRenderBufferSize);
+	_msgRenderBuffer = new uint8[_msgRenderBufferSize]();
 }
 
 TextDisplayer_SegaCD::~TextDisplayer_SegaCD() {
diff --git a/engines/kyra/text/text_lol.cpp b/engines/kyra/text/text_lol.cpp
index 91500ce78b..e8b423da62 100644
--- a/engines/kyra/text/text_lol.cpp
+++ b/engines/kyra/text/text_lol.cpp
@@ -36,8 +36,7 @@ TextDisplayer_LoL::TextDisplayer_LoL(LoLEngine *engine, Screen_LoL *screenLoL) :
 	_vm(engine), _screen(screenLoL), _scriptTextParameter(0) {
 
 	memset(_stringParameters, 0, 15 * sizeof(char *));
-	_buffer = new char[600];
-	memset(_buffer, 0, 600);
+	_buffer = new char[600]();
 
 	_waitButtonSpace = 0;
 }
diff --git a/engines/kyra/text/text_rpg.cpp b/engines/kyra/text/text_rpg.cpp
index 8ad3b5902e..fa865d417c 100644
--- a/engines/kyra/text/text_rpg.cpp
+++ b/engines/kyra/text/text_rpg.cpp
@@ -43,11 +43,9 @@ TextDisplayer_rpg::TextDisplayer_rpg(KyraRpgEngine *engine, Screen *scr) : _vm(e
 		0x00, 0x06, 0x1d, 0x1b, 0x1a, 0x17, 0x18, 0x0e, 0x19, 0x1c, 0x1c, 0x1e, 0x13, 0x0a, 0x11, 0x1f
 	};
 
-	_dialogueBuffer = new char[kEoBTextBufferSize];
-	memset(_dialogueBuffer, 0, kEoBTextBufferSize);
+	_dialogueBuffer = new char[kEoBTextBufferSize]();
 
-	_currentLine = new char[85];
-	memset(_currentLine, 0, 85);
+	_currentLine = new char[85]();
 
 	if (_pc98TextMode)
 		_waitButtonFont = Screen::FID_SJIS_TEXTMODE_FNT;
@@ -74,10 +72,8 @@ TextDisplayer_rpg::TextDisplayer_rpg(KyraRpgEngine *engine, Screen *scr) : _vm(e
 		_textDimData[i].column = d->unkE;
 	}
 
-	_table1 = new char[128];
-	memset(_table1, 0, 128);
-	_table2 = new char[16];
-	memset(_table2, 0, 16);
+	_table1 = new char[128]();
+	_table2 = new char[16]();
 
 	_waitButtonSpace = 0;
 }


Commit: c2e7eeb563219ce8d4136c0c696e5ff48e24ea7a
    https://github.com/scummvm/scummvm/commit/c2e7eeb563219ce8d4136c0c696e5ff48e24ea7a
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-11-10T19:53:15+01:00

Commit Message:
SCUMM: Replace new[]/memset with new[]()

Changed paths:
    engines/scumm/gfx_towns.cpp
    engines/scumm/he/logic/soccer.cpp
    engines/scumm/he/moonbase/ai_main.cpp
    engines/scumm/imuse/drivers/amiga.cpp
    engines/scumm/imuse/drivers/fmtowns.cpp
    engines/scumm/nut_renderer.cpp
    engines/scumm/players/player_towns.cpp
    engines/scumm/resource.cpp


diff --git a/engines/scumm/gfx_towns.cpp b/engines/scumm/gfx_towns.cpp
index 5b5e033646..96dc11f476 100644
--- a/engines/scumm/gfx_towns.cpp
+++ b/engines/scumm/gfx_towns.cpp
@@ -378,9 +378,8 @@ void TownsScreen::setupLayer(int layer, int width, int height, int scaleW, int s
 		warning("TownsScreen::setupLayer(): Layer palette usage requires 16 bit graphics setting.\nLayer palette will be ignored.");
 
 	delete[] l->pixels;
-	l->pixels = new uint8[l->pitch * l->height];
+	l->pixels = new uint8[l->pitch * l->height]();
 	assert(l->pixels);
-	memset(l->pixels, 0, l->pitch * l->height);
 
 	delete[] l->bltTmpPal;
 	l->bltTmpPal = (l->bpp == 1 && _pixelFormat.bytesPerPixel == 2) ? new uint16[l->numCol] : 0;
diff --git a/engines/scumm/he/logic/soccer.cpp b/engines/scumm/he/logic/soccer.cpp
index e9c7087de6..088e257764 100644
--- a/engines/scumm/he/logic/soccer.cpp
+++ b/engines/scumm/he/logic/soccer.cpp
@@ -569,10 +569,8 @@ int LogicHEsoccer::op_1013(int32 a1, int32 a2, int32 a3) {
 	// Initializes _collisionTree, a tree used for collision detection.
 	// It is used by op_1014 to work out which objects to check.
 
-	_collisionTree = new uint32[585 * 11];
+	_collisionTree = new uint32[585 * 11]();
 	_collisionTreeAllocated = true;
-	for (int i = 0; i < 585 * 11; i++)
-		_collisionTree[i] = 0;
 
 	for (int i = 0; i < 8; i++)
 		_collisionTree[i + 2] = addCollisionTreeChild(1, i + 1, 0);
diff --git a/engines/scumm/he/moonbase/ai_main.cpp b/engines/scumm/he/moonbase/ai_main.cpp
index e56140bf10..4f32ee2538 100644
--- a/engines/scumm/he/moonbase/ai_main.cpp
+++ b/engines/scumm/he/moonbase/ai_main.cpp
@@ -2384,11 +2384,8 @@ int *AI::defendTarget(int &targetX, int &targetY, int index) {
 	}
 
 	if (defStatus == -3) {
-		retVal = new int[4];
-		retVal[0] = 0;
+		retVal = new int[4]();
 		retVal[1] = SKIP_TURN;
-		retVal[2] = 0;
-		retVal[3] = 0;
 	}
 
 	assert(targetX >= 0 && targetY >= 0);
diff --git a/engines/scumm/imuse/drivers/amiga.cpp b/engines/scumm/imuse/drivers/amiga.cpp
index cd6039ba88..9b8c99533a 100644
--- a/engines/scumm/imuse/drivers/amiga.cpp
+++ b/engines/scumm/imuse/drivers/amiga.cpp
@@ -599,8 +599,7 @@ IMuseDriver_Amiga::IMuseDriver_Amiga(Audio::Mixer *mixer) : Paula(true, mixer->g
 	_numParts(24), _baseTempo(5500), _internalTempo(5500), _timerProc(0), _timerProcPara(0), _parts(0), _chan(0), _instruments(0), _missingFiles(0), _ticker(0) {
 	setAudioFilter(true);
 
-	_instruments = new Instrument_Amiga[129];
-	memset(_instruments, 0, sizeof(Instrument_Amiga) * 129);
+	_instruments = new Instrument_Amiga[129]();
 	loadInstrument(128);
 
 	_parts = new IMusePart_Amiga*[_numParts];
diff --git a/engines/scumm/imuse/drivers/fmtowns.cpp b/engines/scumm/imuse/drivers/fmtowns.cpp
index 7f6b0a8923..628f3c9a5d 100644
--- a/engines/scumm/imuse/drivers/fmtowns.cpp
+++ b/engines/scumm/imuse/drivers/fmtowns.cpp
@@ -208,11 +208,9 @@ uint8 TownsMidiChanState::get(uint8 type) {
 
 TownsMidiOutputChannel::TownsMidiOutputChannel(MidiDriver_TOWNS *driver, int chanIndex) : _driver(driver), _chan(chanIndex),
 	_in(0), _prev(0), _next(0), _adjustModTl(0), _operator2Tl(0), _note(0), _operator1Tl(0), _sustainNoteOff(0), _duration(0), _freq(0), _freqAdjust(0) {
-	_effectEnvelopes = new EffectEnvelope[2];
-	_effectDefs = new EffectDef[2];
+	_effectEnvelopes = new EffectEnvelope[2]();
+	_effectDefs = new EffectDef[2]();
 
-	memset(_effectEnvelopes, 0, 2 * sizeof(EffectEnvelope));
-	memset(_effectDefs, 0, 2 * sizeof(EffectDef));
 	_effectDefs[0].s = &_effectEnvelopes[1];
 	_effectDefs[1].s = &_effectEnvelopes[0];
 }
@@ -654,8 +652,7 @@ const uint16 TownsMidiOutputChannel::_freqLSB[] = {
 
 TownsMidiInputChannel::TownsMidiInputChannel(MidiDriver_TOWNS *driver, int chanIndex) : MidiChannel(), _driver(driver), _out(0), _chanIndex(chanIndex),
 	_priority(0), _tl(0), _transpose(0), _pitchBendFactor(0), _pitchBend(0), _sustain(0), _freqLSB(0), _detune(0), _modWheel(0), _allocated(false) {
-	_instrument = new uint8[30];
-	memset(_instrument, 0, 30);
+	_instrument = new uint8[30]();
 }
 
 TownsMidiInputChannel::~TownsMidiInputChannel() {
diff --git a/engines/scumm/nut_renderer.cpp b/engines/scumm/nut_renderer.cpp
index 9f6954ab84..f7703d9d8c 100644
--- a/engines/scumm/nut_renderer.cpp
+++ b/engines/scumm/nut_renderer.cpp
@@ -118,10 +118,7 @@ void NutRenderer::loadFont(const char *filename) {
 	uint32 decodedLength = 0;
 	int l;
 
-	_paletteMap = new byte[256];
-	for (l = 0; l < 256; l++) {
-		_paletteMap[l] = 0;
-	}
+	_paletteMap = new byte[256]();
 
 	for (l = 0; l < _numChars; l++) {
 		offset += READ_BE_UINT32(dataSrc + offset + 4) + 16;
@@ -220,8 +217,7 @@ void NutRenderer::loadFont(const char *filename) {
 
 		debug(1, "NutRenderer::loadFont('%s') - compressedLength = %d (%d bpp)", filename, compressedLength, _bpp);
 
-		byte *compressedData = new byte[compressedLength];
-		memset(compressedData, 0, compressedLength);
+		byte *compressedData = new byte[compressedLength]();
 
 		offset = 0;
 
diff --git a/engines/scumm/players/player_towns.cpp b/engines/scumm/players/player_towns.cpp
index a2b3fdb0ff..e3d0b29d8f 100644
--- a/engines/scumm/players/player_towns.cpp
+++ b/engines/scumm/players/player_towns.cpp
@@ -197,8 +197,7 @@ Player_Towns_v1::Player_Towns_v1(ScummEngine *vm, Audio::Mixer *mixer) : Player_
 	_eupLooping = false;
 
 	if (_vm->_game.version == 3) {
-		_soundOverride = new SoundOvrParameters[_numSoundMax];
-		memset(_soundOverride, 0, _numSoundMax * sizeof(SoundOvrParameters));
+		_soundOverride = new SoundOvrParameters[_numSoundMax]();
 	}
 
 	_player = new EuphonyPlayer(mixer);
@@ -584,8 +583,7 @@ void Player_Towns_v1::playCdaTrack(int sound, const uint8 *data, bool skipTrackV
 }
 
 Player_Towns_v2::Player_Towns_v2(ScummEngine *vm, Audio::Mixer *mixer, IMuse *imuse, bool disposeIMuse) : Player_Towns(vm, true), _imuse(imuse), _imuseDispose(disposeIMuse), _sblData(0) {
-	_soundOverride = new SoundOvrParameters[_numSoundMax];
-	memset(_soundOverride, 0, _numSoundMax * sizeof(SoundOvrParameters));
+	_soundOverride = new SoundOvrParameters[_numSoundMax]();
 	_intf = new TownsAudioInterface(mixer, 0, true);
 }
 
diff --git a/engines/scumm/resource.cpp b/engines/scumm/resource.cpp
index fbe56102b6..25d8c174a5 100644
--- a/engines/scumm/resource.cpp
+++ b/engines/scumm/resource.cpp
@@ -839,12 +839,11 @@ byte *ResourceManager::createResource(ResType type, ResId idx, uint32 size) {
 
 	expireResources(size);
 
-	byte *ptr = new byte[size + SAFETY_AREA];
+	byte *ptr = new byte[size + SAFETY_AREA]();
 	if (ptr == NULL) {
 		error("createResource(%s,%d): Out of memory while allocating %d", nameOfResType(type), idx, size);
 	}
 
-	memset(ptr, 0, size + SAFETY_AREA);
 	_allocatedSize += size;
 
 	_types[type][idx]._address = ptr;


Commit: 3919f53326cc740fb6fd1809a211247b90efd10e
    https://github.com/scummvm/scummvm/commit/3919f53326cc740fb6fd1809a211247b90efd10e
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-11-10T19:53:15+01:00

Commit Message:
ENGINES: Replace new[]/memset with new[]()

Changed paths:
    engines/agos/drivers/accolade/pc98.cpp
    engines/agos/items.cpp
    engines/ags/engine/ac/dynobj/cc_dynamic_array.cpp
    engines/ags/engine/script/cc_instance.cpp
    engines/asylum/puzzles/pipes.cpp
    engines/asylum/system/savegame.cpp
    engines/cine/cine.cpp
    engines/cryomni3d/versailles/engine.cpp
    engines/draci/game.cpp
    engines/groovie/cursor.cpp
    engines/groovie/lzss.cpp
    engines/icb/stagedraw_pc_poly.cpp
    engines/lab/dispman.cpp
    engines/lab/labsets.cpp
    engines/lastexpress/data/background.cpp
    engines/made/database.cpp
    engines/parallaction/disk_ns.cpp
    engines/queen/display.cpp
    engines/sci/engine/kernel.cpp
    engines/sci/engine/script_patches.cpp
    engines/sherlock/scene.cpp
    engines/startrek/graphics.cpp
    engines/startrek/lzss.cpp
    engines/sword1/resman.cpp
    engines/testbed/graphics.cpp
    engines/testbed/testsuite.cpp
    engines/toltecs/animation.cpp
    engines/toon/toon.cpp
    engines/twine/resources/lzss.cpp
    engines/ultima/ultima8/convert/convert_shape.cpp
    engines/ultima/ultima8/graphics/shape_frame.cpp
    engines/wintermute/base/scriptables/script_ext_string.cpp
    engines/wintermute/utils/utils.cpp


diff --git a/engines/agos/drivers/accolade/pc98.cpp b/engines/agos/drivers/accolade/pc98.cpp
index a586ccc74f..51d8fe1654 100644
--- a/engines/agos/drivers/accolade/pc98.cpp
+++ b/engines/agos/drivers/accolade/pc98.cpp
@@ -532,8 +532,7 @@ const uint16 PC98FMDriver::_frequency[12] = {
 
 PC98MidiDriver::PC98MidiDriver(MidiDriver::DeviceHandle dev) : _dev(dev), _drv(0) {
 	_instrumentsRemap = (getMusicType(dev) == MT_MT32) ? _instrumentsRemapMT32 : (getMusicType(dev) == MT_GM ? _instrumentsRemapGM : 0);
-	int8 *tbl2 = new int8[128];
-	memset(tbl2, 0, 128);
+	int8 *tbl2 = new int8[128]();
 	_instrumentLevelAdjust = tbl2;
 	_partsRemap = _partsRemapMidi;
 	memcpy(_volSysex, _sysexMsg[0], 9);
diff --git a/engines/agos/items.cpp b/engines/agos/items.cpp
index 86abe403b4..094b97fac6 100644
--- a/engines/agos/items.cpp
+++ b/engines/agos/items.cpp
@@ -38,9 +38,7 @@ Child *AGOSEngine::allocateChildBlock(Item *i, uint type, uint size) {
 }
 
 void *AGOSEngine::allocateItem(uint size) {
-	byte *item = new byte[size];
-
-	memset(item, 0, size);
+	byte *item = new byte[size]();
 	_itemHeap.push_back(item);
 	return item;
 }
diff --git a/engines/ags/engine/ac/dynobj/cc_dynamic_array.cpp b/engines/ags/engine/ac/dynobj/cc_dynamic_array.cpp
index 9a51ede626..aa6095b688 100644
--- a/engines/ags/engine/ac/dynobj/cc_dynamic_array.cpp
+++ b/engines/ags/engine/ac/dynobj/cc_dynamic_array.cpp
@@ -72,8 +72,7 @@ void CCDynamicArray::Unserialize(int index, const char *serializedData, int data
 }
 
 DynObjectRef CCDynamicArray::Create(int numElements, int elementSize, bool isManagedType) {
-	char *newArray = new char[numElements * elementSize + 8];
-	memset(newArray, 0, numElements * elementSize + 8);
+	char *newArray = new char[numElements * elementSize + 8]();
 	int *sizePtr = (int *)newArray;
 	sizePtr[0] = numElements;
 	sizePtr[1] = numElements * elementSize;
diff --git a/engines/ags/engine/script/cc_instance.cpp b/engines/ags/engine/script/cc_instance.cpp
index d48b635b73..f7eb67ec24 100644
--- a/engines/ags/engine/script/cc_instance.cpp
+++ b/engines/ags/engine/script/cc_instance.cpp
@@ -1607,8 +1607,7 @@ ScriptVariable *ccInstance::FindGlobalVar(int32_t var_addr) {
 }
 
 bool ccInstance::CreateRuntimeCodeFixups(PScript scri) {
-	code_fixups = new char[scri->codesize];
-	memset(code_fixups, 0, scri->codesize);
+	code_fixups = new char[scri->codesize]();
 	for (int i = 0; i < scri->numfixups; ++i) {
 		if (scri->fixuptypes[i] == FIXUP_DATADATA) {
 			continue;
diff --git a/engines/asylum/puzzles/pipes.cpp b/engines/asylum/puzzles/pipes.cpp
index b443050c35..4e51ff6beb 100644
--- a/engines/asylum/puzzles/pipes.cpp
+++ b/engines/asylum/puzzles/pipes.cpp
@@ -539,8 +539,7 @@ void PuzzlePipes::setup() {
 		_spiders.push_back(new Spider(_vm, Common::Rect(544, 225, 650, 490)));
 
 	if (i) {
-		_frameIndexSpider = new uint32[_spiders.size()];
-		memset(_frameIndexSpider, 0, _spiders.size() * sizeof(uint32));
+		_frameIndexSpider = new uint32[_spiders.size()]();
 	}
 }
 
diff --git a/engines/asylum/system/savegame.cpp b/engines/asylum/system/savegame.cpp
index 1042613a01..4cc74e57d6 100644
--- a/engines/asylum/system/savegame.cpp
+++ b/engines/asylum/system/savegame.cpp
@@ -312,8 +312,7 @@ Common::String Savegame::read(Common::InSaveFile *file, uint32 strLength, const
 	if (strLength > count)
 		error("[Savegame::read] Count too large (asked: %d, present: %d)", strLength, count);
 
-	char *str = new char[strLength + 1];
-	memset(str, 0, strLength + 1);
+	char *str = new char[strLength + 1]();
 	file->read(str, strLength);
 
 	Common::String ret(str);
diff --git a/engines/cine/cine.cpp b/engines/cine/cine.cpp
index 7e89369660..f4eff1322f 100644
--- a/engines/cine/cine.cpp
+++ b/engines/cine/cine.cpp
@@ -196,8 +196,7 @@ void CineEngine::initialize() {
 	lastSafeControlObjIdx = -1;
 	currentDisk = 1;
 
-	collisionPage = new byte[320 * 200];
-	memset(collisionPage, 0, 320 * 200);
+	collisionPage = new byte[320 * 200]();
 
 	// Clear part buffer as there's nothing loaded into it yet.
 	// Its size will change when loading data into it with the loadPart function.
diff --git a/engines/cryomni3d/versailles/engine.cpp b/engines/cryomni3d/versailles/engine.cpp
index 74cc41cd13..b8c4d521eb 100644
--- a/engines/cryomni3d/versailles/engine.cpp
+++ b/engines/cryomni3d/versailles/engine.cpp
@@ -432,9 +432,7 @@ void CryOmni3DEngine_Versailles::loadCursorsPalette() {
 	}
 
 	_cursorPalette = new byte[3 * (bmpDecoder.getPaletteColorCount() +
-	                               bmpDecoder.getPaletteStartIndex())];
-	memset(_cursorPalette, 0, 3 * (bmpDecoder.getPaletteColorCount() +
-	                               bmpDecoder.getPaletteStartIndex()));
+	                               bmpDecoder.getPaletteStartIndex())]();
 	memcpy(_cursorPalette + 3 * bmpDecoder.getPaletteStartIndex(), bmpDecoder.getPalette(),
 	       3 * bmpDecoder.getPaletteColorCount());
 }
diff --git a/engines/draci/game.cpp b/engines/draci/game.cpp
index 523a1d0132..d3bbd33aad 100644
--- a/engines/draci/game.cpp
+++ b/engines/draci/game.cpp
@@ -134,8 +134,7 @@ Game::Game(DraciEngine *vm) : _vm(vm), _walkingState(vm) {
 		curOffset += dialogueData.readUint16LE();
 	}
 
-	_dialogueVars = new int[curOffset];
-	memset(_dialogueVars, 0, sizeof(int) * curOffset);
+	_dialogueVars = new int[curOffset]();
 
 	// Read in game info
 	file = initArchive->getFile(3);
diff --git a/engines/groovie/cursor.cpp b/engines/groovie/cursor.cpp
index 9c0f9b1e52..a1d3ffd90c 100644
--- a/engines/groovie/cursor.cpp
+++ b/engines/groovie/cursor.cpp
@@ -298,9 +298,8 @@ Cursor_v2::~Cursor_v2() {
 
 void Cursor_v2::decodeFrame(byte *pal, byte *data, byte *dest) {
 	// Scratch memory
-	byte *tmp = new byte[_width * _height * 4];
+	byte *tmp = new byte[_width * _height * 4]();
 	byte *ptr = tmp;
-	memset(tmp, 0, _width * _height * 4);
 
 	byte ctrA = 0, ctrB = 0;
 
diff --git a/engines/groovie/lzss.cpp b/engines/groovie/lzss.cpp
index 2a185aeeab..1ca15b8d2d 100644
--- a/engines/groovie/lzss.cpp
+++ b/engines/groovie/lzss.cpp
@@ -44,8 +44,7 @@ LzssReadStream::~LzssReadStream() {
 
 uint32 LzssReadStream::decodeLZSS(Common::ReadStream *in, uint8 lengthmask, uint8 lengthbits) {
 	uint32 N = 1 << (16 - lengthbits); /* History buffer size */
-	byte *histbuff = new byte[N]; /* History buffer */
-	memset(histbuff, 0, N);
+	byte *histbuff = new byte[N](); /* History buffer */
 	uint32 outstreampos = 0;
 	uint32 bufpos = 0;
 
diff --git a/engines/icb/stagedraw_pc_poly.cpp b/engines/icb/stagedraw_pc_poly.cpp
index 0d047d4273..f5a5f0d461 100644
--- a/engines/icb/stagedraw_pc_poly.cpp
+++ b/engines/icb/stagedraw_pc_poly.cpp
@@ -122,8 +122,7 @@ void InitRevRenderDevice() {
 	SetRenderDevice(&revRen);
 
 	if (pUsedTiles == NULL)
-		pUsedTiles = new uint32[TILE_COUNT];
-	memset(pUsedTiles, 0, TILE_COUNT << 2);
+		pUsedTiles = new uint32[TILE_COUNT]();
 }
 
 void DestoryRevRenderDevice() {
diff --git a/engines/lab/dispman.cpp b/engines/lab/dispman.cpp
index 1ff6ab1ce8..c0e0232bc1 100644
--- a/engines/lab/dispman.cpp
+++ b/engines/lab/dispman.cpp
@@ -429,8 +429,7 @@ void DisplayMan::createScreen(bool hiRes) {
 
 	if (_displayBuffer)
 		delete[] _displayBuffer;
-	_displayBuffer = new byte[_screenBytesPerPage];
-	memset(_displayBuffer, 0, _screenBytesPerPage);
+	_displayBuffer = new byte[_screenBytesPerPage]();
 }
 
 void DisplayMan::setAmigaPal(uint16 *pal) {
diff --git a/engines/lab/labsets.cpp b/engines/lab/labsets.cpp
index 3e84275fa4..e119a99748 100644
--- a/engines/lab/labsets.cpp
+++ b/engines/lab/labsets.cpp
@@ -40,8 +40,7 @@ namespace Lab {
 LargeSet::LargeSet(uint16 last, LabEngine *vm) : _vm(vm) {
 	last = (((last + 15) >> 4) << 4);
 
-	_array = new uint16[last >> 3];
-	memset(_array, 0, last >> 3);
+	_array = new uint16[last >> 3]();
 	_lastElement = last;
 }
 
diff --git a/engines/lastexpress/data/background.cpp b/engines/lastexpress/data/background.cpp
index e1626213e0..88538afe4a 100644
--- a/engines/lastexpress/data/background.cpp
+++ b/engines/lastexpress/data/background.cpp
@@ -102,12 +102,11 @@ Common::Rect Background::draw(Graphics::Surface *surface) {
 
 byte *Background::decodeComponent(Common::SeekableReadStream *in, uint32 inSize, uint32 outSize) const {
 	// Create the destination array
-	byte *out = new byte[outSize];
+	byte *out = new byte[outSize]();
 	if (!out)
 		return NULL;
 
 	// Initialize the decoding
-	memset(out, 0, outSize * sizeof(byte));
 	uint32 inPos = 0;
 	uint32 outPos = 0;
 
diff --git a/engines/made/database.cpp b/engines/made/database.cpp
index ecfd92a562..1e7209a629 100644
--- a/engines/made/database.cpp
+++ b/engines/made/database.cpp
@@ -438,8 +438,7 @@ void GameDatabaseV2::load(Common::SeekableReadStream &sourceS) {
 
 	debug(0, "textOffs = %08X; textSize = %08X; objectCount = %d; varObjectCount = %d; gameStateSize = %d; objectsOffs = %08X; objectsSize = %d; _mainCodeObjectIndex = %04X\n", textOffs, textSize, objectCount, varObjectCount, _gameStateSize, objectsOffs, objectsSize, _mainCodeObjectIndex);
 
-	_gameState = new byte[_gameStateSize + 2];
-	memset(_gameState, 0, _gameStateSize + 2);
+	_gameState = new byte[_gameStateSize + 2]();
 	setVar(1, objectCount);
 
 	sourceS.seek(textOffs);
diff --git a/engines/parallaction/disk_ns.cpp b/engines/parallaction/disk_ns.cpp
index 13072e1db3..0a0ad96c2e 100644
--- a/engines/parallaction/disk_ns.cpp
+++ b/engines/parallaction/disk_ns.cpp
@@ -303,9 +303,8 @@ Cnv *Disk_ns::makeCnv(Common::SeekableReadStream *stream) {
 	assert((width & 7) == 0);
 	uint16 height = stream->readByte();
 	uint32 decsize = numFrames * width * height;
-	byte *data = new byte[decsize];
+	byte *data = new byte[decsize]();
 	assert(data);
-	memset(data, 0, decsize);
 
 	decodeCnv(data, numFrames, width, height, stream);
 
diff --git a/engines/queen/display.cpp b/engines/queen/display.cpp
index 1214f6eb9d..45858a7bbe 100644
--- a/engines/queen/display.cpp
+++ b/engines/queen/display.cpp
@@ -47,25 +47,18 @@ Display::Display(QueenEngine *vm, OSystem *system)
 
 	initFont();
 
-	_screenBuf   = new uint8[ SCREEN_W * SCREEN_H ];
-	_panelBuf    = new uint8[ PANEL_W * PANEL_H ];
-	_backdropBuf = new uint8[ BACKDROP_W * BACKDROP_H ];
-	memset(_screenBuf,   0, SCREEN_W * SCREEN_H);
-	memset(_panelBuf,    0, PANEL_W * PANEL_H);
-	memset(_backdropBuf, 0, BACKDROP_W * BACKDROP_H);
+	_screenBuf   = new uint8[ SCREEN_W * SCREEN_H ]();
+	_panelBuf    = new uint8[ PANEL_W * PANEL_H ]();
+	_backdropBuf = new uint8[ BACKDROP_W * BACKDROP_H ]();
 
 	_fullRefresh = 1;
 	_dirtyBlocksWidth  = SCREEN_W / D_BLOCK_W;
 	_dirtyBlocksHeight = SCREEN_H / D_BLOCK_H;
-	_dirtyBlocks = new uint8[_dirtyBlocksWidth * _dirtyBlocksHeight];
-	memset(_dirtyBlocks, 0, _dirtyBlocksWidth * _dirtyBlocksHeight);
-
-	_pal.room   = new uint8[ 256 * 3 ];
-	_pal.screen = new uint8[ 256 * 3 ];
-	_pal.panel  = new uint8[ 112 * 3 ];
-	memset(_pal.room,   0, 256 * 3);
-	memset(_pal.screen, 0, 256 * 3);
-	memset(_pal.panel,  0, 112 * 3);
+	_dirtyBlocks = new uint8[_dirtyBlocksWidth * _dirtyBlocksHeight]();
+
+	_pal.room   = new uint8[ 256 * 3 ]();
+	_pal.screen = new uint8[ 256 * 3 ]();
+	_pal.panel  = new uint8[ 112 * 3 ]();
 	_pal.dirtyMin = 0;
 	_pal.dirtyMax = 255;
 	_pal.scrollable = true;
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp
index f4d12c0a9f..c5f83a2638 100644
--- a/engines/sci/engine/kernel.cpp
+++ b/engines/sci/engine/kernel.cpp
@@ -660,9 +660,8 @@ void Kernel::mapFunctions(GameFeatures *features) {
 					error("k%s[%x]: no subfunctions found for requested version %s", kernelName.c_str(), id, getSciVersionDesc(mySubVersion));
 				// Now allocate required memory and go through it again
 				_kernelFuncs[id].subFunctionCount = subFunctionCount;
-				KernelSubFunction *subFunctions = new KernelSubFunction[subFunctionCount];
+				KernelSubFunction *subFunctions = new KernelSubFunction[subFunctionCount]();
 				_kernelFuncs[id].subFunctions = subFunctions;
-				memset(subFunctions, 0, sizeof(KernelSubFunction) * subFunctionCount);
 				// And fill this info out
 				kernelSubMap = kernelMap->subFunctions;
 				uint kernelSubNr = 0;
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 0f6cf95ef2..322814b644 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -22155,8 +22155,7 @@ void ScriptPatcher::initSignature(const SciScriptPatcherEntry *patchTable) {
 	while (curEntry->signatureData) {
 		patchEntryCount++; curEntry++;
 	}
-	_runtimeTable = new SciScriptPatcherRuntimeEntry[patchEntryCount];
-	memset(_runtimeTable, 0, sizeof(SciScriptPatcherRuntimeEntry) * patchEntryCount);
+	_runtimeTable = new SciScriptPatcherRuntimeEntry[patchEntryCount]();
 
 	curEntry = patchTable;
 	curRuntimeEntry = _runtimeTable;
diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp
index b02569b26e..476966064c 100644
--- a/engines/sherlock/scene.cpp
+++ b/engines/sherlock/scene.cpp
@@ -499,9 +499,8 @@ bool Scene::loadScene(const Common::String &filename) {
 					rrmStream->readStream(animSize * bgHeader._numcAnimations);
 
 				// Load cAnim offset table as well
-				uint32 *cAnimOffsetTablePtr = new uint32[bgHeader._numcAnimations];
+				uint32 *cAnimOffsetTablePtr = new uint32[bgHeader._numcAnimations]();
 				uint32 *cAnimOffsetPtr = cAnimOffsetTablePtr;
-				memset(cAnimOffsetTablePtr, 0, bgHeader._numcAnimations * sizeof(uint32));
  				if (IS_SERRATED_SCALPEL) {
 					// Save current stream offset
 					int32 curOffset = rrmStream->pos();
@@ -836,10 +835,9 @@ bool Scene::loadScene(const Common::String &filename) {
 			roomStream->seek(header3DO_cAnim_offset);
 			Common::SeekableReadStream *cAnimStream = roomStream->readStream(header3DO_cAnim_size);
 
-			uint32 *cAnimOffsetTablePtr = new uint32[header3DO_numAnimations];
+			uint32 *cAnimOffsetTablePtr = new uint32[header3DO_numAnimations]();
 			uint32 *cAnimOffsetPtr = cAnimOffsetTablePtr;
 			uint32 cAnimOffset = 0;
-			memset(cAnimOffsetTablePtr, 0, header3DO_numAnimations * sizeof(uint32));
 
 			// Seek to end of graphics data and load cAnim offset table from there
 			roomStream->seek(header3DO_bgGraphicData_offset + header3DO_bgGraphicData_size);
diff --git a/engines/startrek/graphics.cpp b/engines/startrek/graphics.cpp
index a6566492d8..e4984e4858 100644
--- a/engines/startrek/graphics.cpp
+++ b/engines/startrek/graphics.cpp
@@ -55,11 +55,8 @@ Graphics::Graphics(StarTrekEngine *vm) : _vm(vm), _egaMode(false) {
 	_numSprites = 0;
 	_pushedNumSprites = -1;
 
-	_palData = new byte[256 * 3];
-	_lutData = new byte[256 * 3];
-
-	memset(_palData, 0, 256 * 3);
-	memset(_lutData, 0, 256 * 3);
+	_palData = new byte[256 * 3]();
+	_lutData = new byte[256 * 3]();
 
 	_paletteFadeLevel = 0;
 	_lockedMousePos = Common::Point(-1, -1);
diff --git a/engines/startrek/lzss.cpp b/engines/startrek/lzss.cpp
index 66ad43f69f..957f66e41e 100644
--- a/engines/startrek/lzss.cpp
+++ b/engines/startrek/lzss.cpp
@@ -33,8 +33,7 @@ namespace StarTrek {
 
 Common::SeekableReadStream *decodeLZSS(Common::SeekableReadStream *indata, uint32 uncompressedSize) {
 	uint32 N = 0x1000; /* History buffer size */
-	byte *histbuff = new byte[N]; /* History buffer */
-	memset(histbuff, 0, N);
+	byte *histbuff = new byte[N](); /* History buffer */
 	uint32 outstreampos = 0;
 	uint32 bufpos = 0;
 	byte *outLzssBufData = (byte *)malloc(uncompressedSize);
diff --git a/engines/sword1/resman.cpp b/engines/sword1/resman.cpp
index f3b0f83e05..12fc0cdafd 100644
--- a/engines/sword1/resman.cpp
+++ b/engines/sword1/resman.cpp
@@ -89,8 +89,7 @@ void ResMan::loadCluDescript(const char *fileName) {
 
 
 	_prj.noClu = file.readUint32LE();
-	_prj.clu = new Clu[_prj.noClu];
-	memset(_prj.clu, 0, _prj.noClu * sizeof(Clu));
+	_prj.clu = new Clu[_prj.noClu]();
 
 	uint32 *cluIndex = (uint32 *)malloc(_prj.noClu * 4);
 	file.read(cluIndex, _prj.noClu * 4);
diff --git a/engines/testbed/graphics.cpp b/engines/testbed/graphics.cpp
index 1d598e82e9..da05fe3683 100644
--- a/engines/testbed/graphics.cpp
+++ b/engines/testbed/graphics.cpp
@@ -379,11 +379,9 @@ void GFXtests::drawEllipse(int cx, int cy, int a, int b) {
 	// Take a buffer of screen size
 	int width = g_system->getWidth();
 	int height = Testsuite::getDisplayRegionCoordinates().y;
-	byte *buffer = new byte[height * width];
+	byte *buffer = new byte[height * width]();
 	double theta;
 	int x, y, x1, y1;
-
-	memset(buffer, 0, sizeof(byte) * width * height);
 	// Illuminate the center
 	buffer[cx * width + cy] = 1;
 
diff --git a/engines/testbed/testsuite.cpp b/engines/testbed/testsuite.cpp
index 805b8c849d..712c56d342 100644
--- a/engines/testbed/testsuite.cpp
+++ b/engines/testbed/testsuite.cpp
@@ -163,8 +163,7 @@ void Testsuite::clearScreen() {
 
 	// Don't clear test info display region
 	int size =  height * numBytesPerLine;
-	byte *buffer = new byte[size];
-	memset(buffer, 0, size);
+	byte *buffer = new byte[size]();
 	g_system->copyRectToScreen(buffer, numBytesPerLine, 0, 0, g_system->getWidth(), height);
 	g_system->updateScreen();
 	delete[] buffer;
@@ -243,8 +242,7 @@ void Testsuite::updateStats(const char *prefix, const char *info, uint testNum,
 	int wRect = 200;
 	int lRect = 7;
 	pt.x = g_system->getWidth() / 2 - 100;
-	byte *buffer = new byte[lRect * wRect];
-	memset(buffer, 0, sizeof(byte) * lRect * wRect);
+	byte *buffer = new byte[lRect * wRect]();
 
 	int wShaded = (int)(wRect * (((float)testNum) / numTests));
 
diff --git a/engines/toltecs/animation.cpp b/engines/toltecs/animation.cpp
index 5278b25ba8..cda30636cd 100644
--- a/engines/toltecs/animation.cpp
+++ b/engines/toltecs/animation.cpp
@@ -28,8 +28,7 @@
 namespace Toltecs {
 
 AnimationPlayer::AnimationPlayer(ToltecsEngine *vm) : _vm(vm) {
-	_animBuffer = new byte[262144];
-	memset(_animBuffer, 0, 262144);
+	_animBuffer = new byte[262144]();
 
 	_resIndex = 0;
 	_width = _height = 0;
diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp
index ea1fe082be..06a08d9955 100644
--- a/engines/toon/toon.cpp
+++ b/engines/toon/toon.cpp
@@ -57,24 +57,15 @@ void ToonEngine::init() {
 	_mainSurface = new Graphics::Surface();
 	_mainSurface->create(TOON_BACKBUFFER_WIDTH, TOON_BACKBUFFER_HEIGHT, Graphics::PixelFormat::createFormatCLUT8());
 
-	_finalPalette = new uint8[768];
-	_backupPalette = new uint8[768];
-	_additionalPalette1 = new uint8[69];
-	_additionalPalette2 = new uint8[69];
-	_cutawayPalette = new uint8[768];
-	_universalPalette = new uint8[96];
-	_fluxPalette = new uint8[24];
-
-	memset(_finalPalette, 0, 768);
-	memset(_backupPalette, 0, 768);
-	memset(_additionalPalette1, 0, 69);
-	memset(_additionalPalette2, 0, 69);
-	memset(_cutawayPalette, 0, 768);
-	memset(_universalPalette, 0, 96);
-	memset(_fluxPalette, 0, 24);
-
-	_conversationData = new int16[4096];
-	memset(_conversationData, 0, 4096 * sizeof(int16));
+	_finalPalette = new uint8[768]();
+	_backupPalette = new uint8[768]();
+	_additionalPalette1 = new uint8[69]();
+	_additionalPalette2 = new uint8[69]();
+	_cutawayPalette = new uint8[768]();
+	_universalPalette = new uint8[96]();
+	_fluxPalette = new uint8[24]();
+
+	_conversationData = new int16[4096]();
 
 	_shouldQuit = false;
 	_scriptStep = 0;
diff --git a/engines/twine/resources/lzss.cpp b/engines/twine/resources/lzss.cpp
index 725e4f971c..e876865976 100644
--- a/engines/twine/resources/lzss.cpp
+++ b/engines/twine/resources/lzss.cpp
@@ -26,8 +26,7 @@
 namespace TwinE {
 
 LzssReadStream::LzssReadStream(Common::ReadStream *indata, uint32 mode, uint32 realsize) {
-	_outLzssBufData = new uint8[realsize];
-	memset(_outLzssBufData, 0, realsize);
+	_outLzssBufData = new uint8[realsize]();
 	decodeLZSS(indata, mode, realsize);
 	_size = realsize;
 	_pos = 0;
diff --git a/engines/ultima/ultima8/convert/convert_shape.cpp b/engines/ultima/ultima8/convert/convert_shape.cpp
index 38287741c0..e4cf3d9c06 100644
--- a/engines/ultima/ultima8/convert/convert_shape.cpp
+++ b/engines/ultima/ultima8/convert/convert_shape.cpp
@@ -102,8 +102,7 @@ void ConvertShape::Read(Common::SeekableReadStream &source, const ConvertShapeFo
 //	}
 
 	// Create _frames array
-	_frames = new ConvertShapeFrame[_num_frames];
-	memset(_frames, 0, _num_frames * sizeof(ConvertShapeFrame));
+	_frames = new ConvertShapeFrame[_num_frames]();
 
 	// Now read the _frames
 	for(uint32 f = 0; f < _num_frames; ++f) {
diff --git a/engines/ultima/ultima8/graphics/shape_frame.cpp b/engines/ultima/ultima8/graphics/shape_frame.cpp
index f52ef9548c..24086d02aa 100644
--- a/engines/ultima/ultima8/graphics/shape_frame.cpp
+++ b/engines/ultima/ultima8/graphics/shape_frame.cpp
@@ -33,9 +33,7 @@ ShapeFrame::ShapeFrame(const RawShapeFrame *rawframe) :
 		_width(rawframe->_width), _height(rawframe->_height) {
 
 	_pixels = new uint8[_width * _height];
-	_mask = new uint8[_width * _height];
-
-	memset(_mask, 0, _width * _height);
+	_mask = new uint8[_width * _height]();
 
 	for (int y = 0; y < _height; y++) {
 		int32 xpos = 0;
diff --git a/engines/wintermute/base/scriptables/script_ext_string.cpp b/engines/wintermute/base/scriptables/script_ext_string.cpp
index 039ec079a1..e00b463c04 100644
--- a/engines/wintermute/base/scriptables/script_ext_string.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_string.cpp
@@ -55,8 +55,7 @@ SXString::SXString(BaseGame *inGame, ScStack *stack) : BaseScriptable(inGame) {
 	if (val->isInt()) {
 		_capacity = MAX(0, val->getInt());
 		if (_capacity > 0) {
-			_string = new char[_capacity];
-			memset(_string, 0, _capacity);
+			_string = new char[_capacity]();
 		}
 	} else {
 		setStringVal(val->getString());
@@ -83,8 +82,7 @@ void SXString::setStringVal(const char *val) {
 		_capacity = len + 1;
 		delete[] _string;
 		_string = nullptr;
-		_string = new char[_capacity];
-		memset(_string, 0, _capacity);
+		_string = new char[_capacity]();
 	}
 	strcpy(_string, val);
 }
@@ -397,9 +395,8 @@ bool SXString::scSetProperty(const char *name, ScValue *value) {
 		if (newCap < (int32)(strlen(_string) + 1)) {
 			_gameRef->LOG(0, "Warning: cannot lower string capacity");
 		} else if (newCap != _capacity) {
-			char *newStr = new char[newCap];
+			char *newStr = new char[newCap]();
 			if (newStr) {
-				memset(newStr, 0, newCap);
 				strcpy(newStr, _string);
 				delete[] _string;
 				_string = newStr;
diff --git a/engines/wintermute/utils/utils.cpp b/engines/wintermute/utils/utils.cpp
index 7f976a24c3..9caa454355 100644
--- a/engines/wintermute/utils/utils.cpp
+++ b/engines/wintermute/utils/utils.cpp
@@ -118,8 +118,7 @@ char *BaseUtils::strEntry(int entry, const char *str, const char delim) {
 		if (str[i] == delim || str[i] == '\0') {
 			numEntries++;
 			if (start) {
-				char *ret = new char[len + 1];
-				memset(ret, 0, len + 1);
+				char *ret = new char[len + 1]();
 				Common::strlcpy(ret, start, len + 1);
 				return ret;
 			}




More information about the Scummvm-git-logs mailing list