Index: src/OFBlock.m ================================================================== --- src/OFBlock.m +++ src/OFBlock.m @@ -294,10 +294,18 @@ - copy { return Block_copy(self); } + +- autorelease +{ + if (isa == (Class)&_NSConcreteMallocBlock) + return [super autorelease]; + + return self; +} - (size_t)retainCount { if (isa == (Class)&_NSConcreteMallocBlock) return ((of_block_literal_t*)self)->reserved; Index: src/OFXMLParser.m ================================================================== --- src/OFXMLParser.m +++ src/OFXMLParser.m @@ -189,14 +189,11 @@ } #ifdef OF_HAVE_BLOCKS - (of_xml_parser_element_start_block_t)elementStartHandler { - of_xml_parser_element_start_block_t block = [elementStartHandler copy]; - [OFAutoreleasePool addObject: block]; - - return block; + return [[elementStartHandler copy] autorelease]; } - (void)setElementStartHandler: (of_xml_parser_element_start_block_t)block { block = [block copy]; @@ -204,14 +201,11 @@ elementStartHandler = block; } - (of_xml_parser_element_end_block_t)elementEndHandler { - of_xml_parser_element_end_block_t block = [elementEndHandler copy]; - [OFAutoreleasePool addObject: block]; - - return block; + return [[elementEndHandler copy] autorelease]; } - (void)setElementEndHandler: (of_xml_parser_element_end_block_t)block { block = [block copy]; @@ -219,14 +213,11 @@ elementEndHandler = block; } - (of_xml_parser_string_block_t)charactersHandler { - of_xml_parser_string_block_t block = [charactersHandler copy]; - [OFAutoreleasePool addObject: block]; - - return block; + return [[charactersHandler copy] autorelease]; } - (void)setCharactersHandler: (of_xml_parser_string_block_t)block { block = [block copy]; @@ -234,14 +225,11 @@ charactersHandler = block; } - (of_xml_parser_string_block_t)CDATAHandler { - of_xml_parser_string_block_t block = [CDATAHandler copy]; - [OFAutoreleasePool addObject: block]; - - return block; + return [[CDATAHandler copy] autorelease]; } - (void)setCDATAHandler: (of_xml_parser_string_block_t)block { block = [block copy]; @@ -249,14 +237,11 @@ CDATAHandler = block; } - (of_xml_parser_string_block_t)commentHandler { - of_xml_parser_string_block_t block = [commentHandler copy]; - [OFAutoreleasePool addObject: block]; - - return block; + return [[commentHandler copy] autorelease]; } - (void)setCommentHandler: (of_xml_parser_string_block_t)block { block = [block copy]; @@ -264,16 +249,11 @@ commentHandler = block; } - (of_xml_parser_unknown_entity_block_t)unknownEntityHandler { - of_xml_parser_unknown_entity_block_t block; - - block = [unknownEntityHandler copy]; - [OFAutoreleasePool addObject: block]; - - return block; + return [[unknownEntityHandler copy] autorelease]; } - (void)setUnknownEntityHandler: (of_xml_parser_unknown_entity_block_t)block { block = [block copy];