RE: Analyzer in error?
RE: Analyzer in error?
- Subject: RE: Analyzer in error?
- From: Kirk Kerekes <email@hidden>
- Date: Thu, 14 Jan 2010 07:10:33 -0600
AFAIK, yes.
Please file a bug to add to the ones I have filed on this and similar behaviors.
On Jan 13, 2010, at 9:49 PM, email@hidden wrote:
> Message: 10
> Date: Thu, 14 Jan 2010 12:54:46 +1100
> From: Graham Cox <email@hidden>
> Subject: Analyzer in error?
> To: Cocoa-Dev List <email@hidden>
> Message-ID: <email@hidden>
> Content-Type: text/plain; charset=us-ascii
>
> Hi all, I have the following code in a category on NSData:
>
>
> @implementation NSData (SHA1Hash)
>
> - (NSData*) sha1Hash
> {
> // calculates the 160 bit SHA-1 digest of the given data
>
> unsigned char* digest = (unsigned char*) malloc(20);
> SHA1([self bytes], [self length], digest);
>
> return [[self class] dataWithBytesNoCopy:digest length:20];
> }
>
>
> @end
>
>
> The static analyzer reports this:
>
> Potential leak of an object allocated on line 622
>
> Method returns an Objective-C object with a +1 retain count (owning reference)
> Object returned to caller as an owning reference (single retain count transferred to caller)
> Object allocated on line 622 is returned from a method whose name ('sha1Hash') does not contain 'copy' or otherwise starts with 'new' or 'alloc'. This violates the naming convention rules given in the Memory Management Guide for Cocoa (object leaked)
>
> But I think this is wrong - [NSData dataWithBytesNoCopy] returns an object I don't own, and it in turn takes ownership of <digest>. So where's the leak? Is clang simply mistaking the fact that +dataWithBytesNoCopy CONTAINS 'copy' and not STARTS WITH copy?
>
> --Graham
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden