]> granicus.if.org Git - multimarkdown/commitdiff
FIXED: Free memory from asset hash
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Sat, 18 Mar 2017 20:57:24 +0000 (16:57 -0400)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Sat, 18 Mar 2017 20:57:24 +0000 (16:57 -0400)
Sources/libMultiMarkdown/mmd.c
Sources/libMultiMarkdown/writer.c
Sources/libMultiMarkdown/writer.h

index a4b206c2b7fd20d01611f8db6cbf645005bba59c..5b06583b1c3c0974ae50812e722deb4379564461 100644 (file)
@@ -272,6 +272,14 @@ void mmd_engine_free(mmd_engine * e, bool freeDString) {
        }
        stack_free(e->metadata_stack);
 
+
+       // Free asset hash
+       asset * a, * a_tmp;
+       HASH_ITER(hh, e->asset_hash, a, a_tmp) {
+               HASH_DEL(e->asset_hash, a);     // Remove item from hash
+               asset_free(a);                          // Free the asset
+       }
+
        free(e);
 }
 
index 752de3c371b95a310137028ea67e7e5b49315e6a..45c03f47b1c0b0c04411356813da98f808b81900 100644 (file)
@@ -2321,6 +2321,16 @@ asset * asset_new(char * url, scratch_pad * scratch) {
 }
 
 
+void asset_free(asset * a) {
+       if (a) {
+               free(a->url);
+               free(a->asset_path);
+       }
+
+       free(a);
+}
+
+
 asset * extract_asset(scratch_pad * scratch, char * url) {
        asset * a;
 
@@ -2329,6 +2339,7 @@ asset * extract_asset(scratch_pad * scratch, char * url) {
        return a;
 }
 
+
 void store_asset(scratch_pad * scratch, char * url) {
        asset * a = extract_asset(scratch, url);
 
index 2ac2681e97a5ec779ab8a72bd2457f9b4c815cca..08ed9f384104704c285a0b32c14a1deacf8a0074 100644 (file)
@@ -245,6 +245,7 @@ short raw_level_for_header(token * header);
 
 void store_asset(scratch_pad * scratch_pad, char * url);
 asset * extract_asset(scratch_pad * scratch, char * url);
+void asset_free(asset * a);
 
 #endif