Commit Diff


commit - e0b573502e97109a2383ba55a08e39d0b1891d7f
commit + e09d28b120745366d5f1af3e5d2aee00384ae47a
blob - d2d3fe04e80254afe9c7056ea5e4746a2c02d9ea
blob + c1a026bc8f6241358b948162f01eba7bde390c71
--- lib/reference.c
+++ lib/reference.c
@@ -411,9 +411,10 @@ done:
 void
 got_ref_close(struct got_reference *ref)
 {
-	if (ref->flags & GOT_REF_IS_SYMBOLIC)
+	if (ref->flags & GOT_REF_IS_SYMBOLIC) {
 		free(ref->ref.symref.name);
-	else
+		free(ref->ref.symref.ref);
+	} else
 		free(ref->ref.ref.name);
 	free(ref);
 }
@@ -557,7 +558,7 @@ insert_ref(struct got_reflist_head *refs, struct got_r
 		cmp = got_path_cmp(got_ref_get_name(re->ref),
 		    got_ref_get_name(ref));
 		if (cmp == 0) {
-			free(ref); /* duplicate */
+			got_ref_close(ref); /* duplicate */
 			return NULL;
 		} else if (cmp > 0) {
 			if (prev)