Browse Source

Fix 3 memory leaks

Chaosus 7 years ago
parent
commit
7c0da76402

+ 9 - 0
thirdparty/README.md

@@ -11,6 +11,9 @@ The files were adapted to Godot by removing the dependency on b2Math (replacing
 it by b2Glue.h) and commenting out some verbose printf calls.
 Upstream code has not changed in 10 years, no need to keep track of changes.
 
+Important: Some files have Godot-made changes.
+They are marked with `// -- GODOT start --` and `// -- GODOT end --`
+comments.
 
 ## bullet
 
@@ -69,6 +72,9 @@ Files extracted from upstream source:
 - all .cpp and .h files in EtcLib/
 - README.md, LICENSE, AUTHORS
 
+Important: Some files have Godot-made changes.
+They are marked with `// -- GODOT start --` and `// -- GODOT end --`
+comments.
 
 ## fonts
 
@@ -165,6 +171,9 @@ Files extracted from upstream source:
 
 TODO.
 
+Important: Some files have Godot-made changes.
+They are marked with `// -- GODOT start --` and `// -- GODOT end --`
+comments.
 
 ## libtheora
 

+ 6 - 1
thirdparty/b2d_convexdecomp/b2Polygon.cpp

@@ -1342,7 +1342,12 @@ b2Polygon TraceEdge(b2Polygon* p){
 				if (nodes[j].nConnected == 0) continue;
 				b2Vec2 diff = nodes[i].position - nodes[j].position;
 				if (diff.LengthSquared() <= COLLAPSE_DIST_SQR){
-					if (nActive <= 3) return b2Polygon();
+					if (nActive <= 3) {
+						// -- GODOT start --
+						delete[] nodes;
+						// -- GODOT end --
+						return b2Polygon();
+					}	
 					//printf("Found dupe, %d left\n",nActive);
 					--nActive;
 					foundDupe = true;

+ 3 - 0
thirdparty/etc2comp/EtcFilter.cpp

@@ -228,6 +228,9 @@ int FilterTwoPass( RGBCOLOR *pSrcImage, int srcWidth, int srcHeight,
     pTempImage = (RGBCOLOR *)malloc( destWidth * srcHeight * sizeof(RGBCOLOR) );
     if ( pTempImage == NULL )
     {
+        // -- GODOT start --
+        free( contrib );
+        // -- GODOT end --
         return 0;
     }
 

+ 3 - 1
thirdparty/libsimplewebm/libwebm/mkvparser/mkvparser.cc

@@ -1284,7 +1284,9 @@ long Segment::DoLoadCluster(long long& pos, long& len) {
     pos += cluster_size;
 
     m_pos = pos;
-
+    // -- GODOT start --
+    delete pCluster;
+    // -- GODOT end --
     if (segment_stop > 0 && m_pos > segment_stop)
       return E_FILE_FORMAT_INVALID;