Re: Avoiding leaks with "initWithCGImage"

2023-08-24 Thread Rob Petrovec via Cocoa-dev
To be clear, CGImageForProposedRect doesn’t have ‘Create’ in the name. So the 'Create Rule' doesn’t apply. But it is an easy thing to overlook. —Rob > On Aug 24, 2023, at 2:35 AM, JPH wrote: > > Thanks to all of you > The CFRelease(imageRef); was the problem and the CFRelease(subImageRef);

Re: Avoiding leaks with "initWithCGImage"

2023-08-24 Thread Rob Petrovec via Cocoa-dev
ARC only affects Objective-C objects. It has no effect on CF objects like CGImageRefs, CFArrayRefs, CFDictionaryRefs etc. If you play with CF objects in an ARC app you still need to release them. You don’t need to release Obj-C objects and the compiler will warn you if you try to. —Rob > On

Re: Avoiding leaks with "initWithCGImage"

2023-08-24 Thread JPH via Cocoa-dev
Thanks to all of you The CFRelease(imageRef); was the problem and the CFRelease(subImageRef); is OK My fault was then to apply the old days « Create rule » , bypassing ARC ! I was misled by Instruments/Leaks which reports a leak, which meant to me that I had to look for a missing release, no

Re: Avoiding leaks with "initWithCGImage"

2023-08-23 Thread Sandor Szatmari via Cocoa-dev
You mention ARC… aren’t you not supposed to explicitly release objects under ARC? Am I misunderstanding? Sandor > On Aug 23, 2023, at 18:48, JPH via Cocoa-dev > wrote: > > Hello friends, > > The enclosed procedure is producing a NSImage from another NSImage, by > cropping in a NSRect. >

Re: Avoiding leaks with "initWithCGImage"

2023-08-23 Thread Alex Zavatone via Cocoa-dev
Got a small sample we could play with? I would expect the crash on explicit release as it would cause a double release. I tend to ignore I strums to with leaks and use the Memory Graph debugger religiously. If you have a little sample showing this, I would be happy to test a bit with it. Che

Re: Avoiding leaks with "initWithCGImage"

2023-08-23 Thread Rob Petrovec via Cocoa-dev
CGImageForProposedRect returns an autoreleased CGImageRef, so your CFRelease(imageRef) is an overrelease and likely the cause of your problem. The rest of the code looks fine, including the release of subImageRef (if it was uncommented). —Rob > On Aug 23, 2023, at 4:47 PM, JPH via Cocoa-dev

Avoiding leaks with "initWithCGImage"

2023-08-23 Thread JPH via Cocoa-dev
Hello friends, The enclosed procedure is producing a NSImage from another NSImage, by cropping in a NSRect. The resulting sub-Image feeds an imageView in the APP Interface and the may change frequently, then being hopefully disposed by ARC The last line of the procedure : NSImage *subImage