[LLVMbugs] [Bug 14845] New: Need something like CF_CONSUMES_THIS to indicate CF_CONSUMED on 'this'

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Jan 8 02:18:47 PST 2013


http://llvm.org/bugs/show_bug.cgi?id=14845

             Bug #: 14845
           Summary: Need something like CF_CONSUMES_THIS to indicate
                    CF_CONSUMED on 'this'
           Product: clang
           Version: 3.2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Static Analyzer
        AssignedTo: kremenek at apple.com
        ReportedBy: daniel.eggert at hoerbuch.dk
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


__attribute__((cf_consumed)) can be specified on an argument, but in C++ the
'this' argument is implicit, so there's no way to add
__attribute__((cf_consumed)) to it. In ObjC that's solved by adding
__attribute__((ns_consumes_self)) to the method. In C++ when a method
'consumes' the 'this' argument, we'd need a __attribute__((cf_consumes_this)).

A situation with CF where this is needed:


#import <CoreText/CoreText.h>
struct __CTFont {
    void release(void) const {
        if (this != NULL) {
            CFRelease(this);
        }
    }
};
void foo(void)
{
    CTFontRef f = CTFontCreateWithName((__bridge CFStringRef) @"MyFont", 12,
NULL);
    f->release();
}

Which confuses the static analyser, because it doesn't pick up the fact, that
release() consumes 'f'.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list