# HG changeset patch # User William Welliver # Date 1633541846 14400 # Wed Oct 06 13:37:26 2021 -0400 # Node ID ad0af4286a190ba9fd0644e04928a3376b0bb43a # Parent bd63bd7a87ba1dbb0062ec712c79d1536b062143 fix some more leaks identified by the leaks tool note that the free_svalue leak may not be an actual leak. diff --git a/OC_Mapping.m b/OC_Mapping.m --- a/OC_Mapping.m +++ b/OC_Mapping.m @@ -226,6 +226,10 @@ // add_ref(mapping); v = low_mapping_lookup(mapping, k); //LOG("looked it up.\n"); +free_svalue(k); +if(k) free(k); +LOG("refs: %d\n", k->u.dummy->refs); +free_svalue(k); if(!v) { // LOG("missed the entry.\n"); diff --git a/dynamic_class.m b/dynamic_class.m --- a/dynamic_class.m +++ b/dynamic_class.m @@ -405,6 +405,7 @@ str = [[NSString alloc] initWithBytes: sv->u.string->str length: sv->u.string->len encoding: enc]; pop_stack(); argumentList[x] = &(str); + [str autorelease]; } else Pike_error("Type mismatch for method argument."); diff --git a/util.m b/util.m --- a/util.m +++ b/util.m @@ -308,21 +308,15 @@ u8s = [obj UTF8String]; str = make_shared_binary_string(u8s, [obj lengthOfBytesUsingEncoding: enc]); // free(u8s); - // add_ref(str); push_string(str); f_utf8_to_string(1); -// assign_svalue_no_free(sv, &(Pike_sp[-1])); TYPEOF(*sv) = T_STRING; SUBTYPEOF(*sv) = 0; sv->u.string = Pike_sp[-1].u.string; // sv->u.string = str;; add_ref(sv->u.string); -LOG("str: %s\n", sv->u.string->str); pop_stack(); LOG("str: %s\n", sv->u.string->str); -LOG("str: %p\n", sv); -LOG("str: %p\n", sv->u); -LOG("str: %d\n", sizeof(sv)); return sv; } }