From 73d0e7fda37747eb7ab6593d5648c94c275b1f93 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Sat, 19 Jul 2008 19:53:35 +0200 Subject: [PATCH] dnsapi: Fix a number of memory leaks. --- dlls/dnsapi/record.c | 7 +++++-- dlls/dnsapi/tests/record.c | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/dlls/dnsapi/record.c b/dlls/dnsapi/record.c index 958403172d8..9755a3d1a9f 100644 --- a/dlls/dnsapi/record.c +++ b/dlls/dnsapi/record.c @@ -680,7 +680,7 @@ BOOL WINAPI DnsRecordSetCompare( PDNS_RECORD set1, PDNS_RECORD set2, DNS_RRSET_ADD( rr1, u ); ret = FALSE; } - else heap_free( u ); + else DnsRecordListFree( u, DnsFreeRecordList ); } } @@ -696,7 +696,7 @@ BOOL WINAPI DnsRecordSetCompare( PDNS_RECORD set1, PDNS_RECORD set2, DNS_RRSET_ADD( rr2, u ); ret = FALSE; } - else heap_free( u ); + else DnsRecordListFree( u, DnsFreeRecordList ); } } @@ -704,7 +704,10 @@ BOOL WINAPI DnsRecordSetCompare( PDNS_RECORD set1, PDNS_RECORD set2, DNS_RRSET_TERMINATE( rr2 ); if (diff1) *diff1 = rr1.pFirstRR; + else DnsRecordListFree( rr1.pFirstRR, DnsFreeRecordList ); + if (diff2) *diff2 = rr2.pFirstRR; + else DnsRecordListFree( rr2.pFirstRR, DnsFreeRecordList ); return ret; diff --git a/dlls/dnsapi/tests/record.c b/dlls/dnsapi/tests/record.c index 5d68bd41872..8ce0f3dd179 100644 --- a/dlls/dnsapi/tests/record.c +++ b/dlls/dnsapi/tests/record.c @@ -89,9 +89,11 @@ static void test_DnsRecordSetCompare( void ) ok( DnsRecordSetCompare( rr1.pFirstRR, NULL, &diff1, &diff2 ) == FALSE, "succeeded unexpectedly\n" ); ok( diff1 != NULL && diff2 == NULL, "unexpected result: %p, %p\n", diff1, diff2 ); + DnsRecordListFree( diff1, DnsFreeRecordList ); ok( DnsRecordSetCompare( NULL, rr2.pFirstRR, &diff1, &diff2 ) == FALSE, "succeeded unexpectedly\n" ); ok( diff1 == NULL && diff2 != NULL, "unexpected result: %p, %p\n", diff1, diff2 ); + DnsRecordListFree( diff2, DnsFreeRecordList ); ok( DnsRecordSetCompare( rr1.pFirstRR, rr2.pFirstRR, NULL, &diff2 ) == TRUE, "failed unexpectedly\n" ); ok( diff2 == NULL, "unexpected result: %p\n", diff2 ); @@ -105,8 +107,14 @@ static void test_DnsRecordSetCompare( void ) r2.Data.A.IpAddress = 0; ok( DnsRecordSetCompare( rr1.pFirstRR, rr2.pFirstRR, NULL, &diff2 ) == FALSE, "succeeded unexpectedly\n" ); + DnsRecordListFree( diff2, DnsFreeRecordList ); + ok( DnsRecordSetCompare( rr1.pFirstRR, rr2.pFirstRR, &diff1, NULL ) == FALSE, "succeeded unexpectedly\n" ); + DnsRecordListFree( diff1, DnsFreeRecordList ); + ok( DnsRecordSetCompare( rr1.pFirstRR, rr2.pFirstRR, &diff1, &diff2 ) == FALSE, "succeeded unexpectedly\n" ); + DnsRecordListFree( diff1, DnsFreeRecordList ); + DnsRecordListFree( diff2, DnsFreeRecordList ); } static void test_DnsRecordSetDetach( void ) -- 2.11.4.GIT