[Scummvm-git-logs] scummvm master -> 896d281ddcd039012c0adf17dd2ebe2090a5e8c8
bluegr
bluegr at gmail.com
Mon Mar 2 09:12:26 UTC 2020
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:
896d281ddc ULTIMA8: Free the correct pointer in ~OAutoBufferDataSource
Commit: 896d281ddcd039012c0adf17dd2ebe2090a5e8c8
https://github.com/scummvm/scummvm/commit/896d281ddcd039012c0adf17dd2ebe2090a5e8c8
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-03-02T11:12:22+02:00
Commit Message:
ULTIMA8: Free the correct pointer in ~OAutoBufferDataSource
Also add a unit test for the class to make sure the problem
is fixed.
Changed paths:
A test/engines/ultima/ultima8/filesys/odata_source.h
engines/ultima/ultima8/filesys/odata_source.h
diff --git a/engines/ultima/ultima8/filesys/odata_source.h b/engines/ultima/ultima8/filesys/odata_source.h
index 4af11a934b..6dd2d9c5fd 100644
--- a/engines/ultima/ultima8/filesys/odata_source.h
+++ b/engines/ultima/ultima8/filesys/odata_source.h
@@ -359,7 +359,7 @@ public:
}
~OAutoBufferDataSource() override {
- delete [] _bufPtr;
+ delete [] _buf;
}
void write1(uint32 val) override {
diff --git a/test/engines/ultima/ultima8/filesys/odata_source.h b/test/engines/ultima/ultima8/filesys/odata_source.h
new file mode 100644
index 0000000000..3c288c8307
--- /dev/null
+++ b/test/engines/ultima/ultima8/filesys/odata_source.h
@@ -0,0 +1,74 @@
+#include <cxxtest/TestSuite.h>
+#include "engines/ultima/ultima8/filesys/odata_source.h"
+/**
+ * Test suite for the functions in engines/ultima/ultima8/filesys/odata_source.h
+ */
+
+class U8ODataSourceTestSuite : public CxxTest::TestSuite {
+ public:
+ U8ODataSourceTestSuite() {
+ }
+
+ void test_autobuffer_source() {
+ Ultima::Ultima8::OAutoBufferDataSource source(12);
+ TS_ASSERT_EQUALS(source.getSize(), 0);
+ TS_ASSERT_EQUALS(source.getPos(), 0);
+
+ source.write1(0xBEEF);
+ TS_ASSERT_EQUALS(source.getSize(), 1);
+ TS_ASSERT_EQUALS(source.getPos(), 1);
+
+ for (int i = 0; i < 10; i++) {
+ source.write4(0x8088C0DE);
+ }
+ TS_ASSERT_EQUALS(source.getSize(), 41);
+ TS_ASSERT_EQUALS(source.getPos(), 41);
+ source.skip(0);
+ TS_ASSERT_EQUALS(source.getSize(), 41);
+ TS_ASSERT_EQUALS(source.getPos(), 41);
+ // Check trying to skip past the end
+ source.skip(2);
+ TS_ASSERT_EQUALS(source.getSize(), 41);
+ TS_ASSERT_EQUALS(source.getPos(), 41);
+ source.skip(-2);
+ TS_ASSERT_EQUALS(source.getPos(), 39);
+ source.write1(0x99);
+ TS_ASSERT_EQUALS(source.getSize(), 41);
+ TS_ASSERT_EQUALS(source.getPos(), 40);
+ source.seek(2);
+ TS_ASSERT_EQUALS(source.getSize(), 41);
+ TS_ASSERT_EQUALS(source.getPos(), 2);
+
+ const uint8* buf = source.getBuf();
+ TS_ASSERT_EQUALS(buf[0], 0xEF);
+ TS_ASSERT_EQUALS(buf[1], 0xDE);
+ TS_ASSERT_EQUALS(buf[2], 0xC0);
+ TS_ASSERT_EQUALS(buf[3], 0x88);
+ TS_ASSERT_EQUALS(buf[23], 0x88);
+ TS_ASSERT_EQUALS(buf[24], 0x80);
+ TS_ASSERT_EQUALS(buf[35], 0x88);
+ TS_ASSERT_EQUALS(buf[36], 0x80);
+
+ source.clear();
+ TS_ASSERT_EQUALS(source.getSize(), 0);
+ TS_ASSERT_EQUALS(source.getPos(), 0);
+
+ source.write1(0x04030201);
+ source.write2(0x08070605);
+ source.write3(0x0C0B0A09);
+ source.write4(0x100F0E0D);
+
+ buf = source.getBuf();
+ TS_ASSERT_EQUALS(buf[0], 0x01);
+ TS_ASSERT_EQUALS(buf[1], 0x05);
+ TS_ASSERT_EQUALS(buf[2], 0x06);
+ TS_ASSERT_EQUALS(buf[3], 0x09);
+ TS_ASSERT_EQUALS(buf[4], 0x0A);
+ TS_ASSERT_EQUALS(buf[5], 0x0B);
+ TS_ASSERT_EQUALS(buf[6], 0x0D);
+ TS_ASSERT_EQUALS(buf[7], 0x0E);
+ TS_ASSERT_EQUALS(buf[8], 0x0F);
+ TS_ASSERT_EQUALS(buf[9], 0x10);
+ }
+
+};
More information about the Scummvm-git-logs
mailing list