[Scummvm-git-logs] scummvm master -> f6310e5e2672b1270c814a08f2cd052bcd874e2c

OMGPizzaGuy noreply at scummvm.org
Wed Nov 15 03:52:28 UTC 2023


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

Summary:
f6310e5e26 ULTIMA8: Small cleanup of SKF player to gaurd against errors


Commit: f6310e5e2672b1270c814a08f2cd052bcd874e2c
    https://github.com/scummvm/scummvm/commit/f6310e5e2672b1270c814a08f2cd052bcd874e2c
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2023-11-14T21:52:08-06:00

Commit Message:
ULTIMA8: Small cleanup of SKF player to gaurd against errors

Changed paths:
    engines/ultima/ultima8/graphics/skf_player.cpp


diff --git a/engines/ultima/ultima8/graphics/skf_player.cpp b/engines/ultima/ultima8/graphics/skf_player.cpp
index cb58eba5688..e52d342605a 100644
--- a/engines/ultima/ultima8/graphics/skf_player.cpp
+++ b/engines/ultima/ultima8/graphics/skf_player.cpp
@@ -279,7 +279,6 @@ void SKFPlayer::run() {
 	_curFrame++;
 
 	PaletteManager *palman = PaletteManager::get_instance();
-	Common::SeekableReadStream *object;
 
 	uint16 objecttype = 0;
 	do {
@@ -290,35 +289,35 @@ void SKFPlayer::run() {
 		}
 
 		// read object
-		object = _skf->get_datasource(_curObject);
-		if (!object || object->size() < 2)
+		Common::SeekableReadStream * object = _skf->get_datasource(_curObject);
+		if (!object)
 			continue;
 
-		objecttype = object->readUint16LE();
+		objecttype = object->size() > 2 ? object->readUint16LE() : 0;
 
 		debugC(kDebugVideo, "Object %u/%u, type = %u", _curObject, _skf->getCount(),  objecttype);
 
-		if (objecttype == 1) {
+		switch (objecttype) {
+		case 1:
 			palman->load(PaletteManager::Pal_Movie, *object);
+			break;
+		case 2: {
+			object->seek(0);
+			Shape *shape = new Shape(object, &U8SKFShapeFormat);
+			Palette *pal = palman->getPalette(PaletteManager::Pal_Movie);
+			shape->setPalette(pal);
+			_buffer->BeginPainting();
+			_buffer->Paint(shape, 0, 0, 0);
+			_buffer->EndPainting();
+			delete shape;
+			break;
+		}
+		default:
+			break;
 		}
-
-		if (objecttype != 2)
-			delete object;
-
-	} while (objecttype != 2);
-
-	if (objecttype == 2) {
-		object->seek(0);
-		Shape *shape = new Shape(object, &U8SKFShapeFormat);
-		Palette *pal = palman->getPalette(PaletteManager::Pal_Movie);
-		shape->setPalette(pal);
-		_buffer->BeginPainting();
-		_buffer->Paint(shape, 0, 0, 0);
-		_buffer->EndPainting();
-		delete shape;
 
 		delete object;
-	}
+	} while (objecttype != 2);
 
 	_timer = 1; // HACK! timing is rather broken currently...
 }




More information about the Scummvm-git-logs mailing list