Browse Source

Merge pull request #1032 from Kelimion/png_fix

PNG: Fix leak if you don't ask for metadata.
Jeroen van Rijn 4 years ago
parent
commit
d2e55f9ffa
2 changed files with 4 additions and 8 deletions
  1. 2 4
      core/image/png/helpers.odin
  2. 2 4
      core/image/png/png.odin

+ 2 - 4
core/image/png/helpers.odin

@@ -34,10 +34,8 @@ destroy :: proc(img: ^Image) {
 	}
 
 	bytes.buffer_destroy(&img.pixels);
-	if img.metadata_ptr != nil && img.metadata_type == Info {
-		// Clean up Info.
-		free(img.metadata_ptr);
-	}
+	// Clean up Info.
+	free(img.metadata_ptr);
 
 	/*
 		We don't need to do anything for the individual chunks.

+ 2 - 4
core/image/png/png.odin

@@ -402,6 +402,8 @@ load_from_stream :: proc(stream: io.Stream, options := Options{}, allocator := c
 	}
 
 	info := new(Info, context.allocator);
+	img.metadata_ptr  = info;
+	img.metadata_type = typeid_of(Info);
 
 	ctx := &compress.Context{
 		input = stream,
@@ -663,10 +665,6 @@ load_from_stream :: proc(stream: io.Stream, options := Options{}, allocator := c
 		}
 	}
 
-	if .return_header in options || .return_metadata in options {
-		img.metadata_ptr  = info;
-		img.metadata_type = typeid_of(Info);
-	}
 	if .do_not_decompress_image in options {
 		img.channels = final_image_channels;
 		return img, nil;