]> granicus.if.org Git - clang/commit
[analyzer] Buffers passed to CGBitmapContextCreate can escape.
authorJordan Rose <jordan_rose@apple.com>
Sat, 16 Jun 2012 00:09:20 +0000 (00:09 +0000)
committerJordan Rose <jordan_rose@apple.com>
Sat, 16 Jun 2012 00:09:20 +0000 (00:09 +0000)
commit1bf908df57cc43f3bc7296f4e51f5708bd323c6b
tree6168abf1a59d940bcbbc9c711f288e7b889afab7
parent32f498a675df990901e6659d610dc740f9423228
[analyzer] Buffers passed to CGBitmapContextCreate can escape.

Specifically, although the bitmap context does not take ownership of the
buffer (unlike CGBitmapContextCreateWithData), the data buffer can be extracted
out of the created CGContextRef. Thus the buffer is not leaked even if its
original pointer goes out of scope, as long as
- the context escapes, or
- it is retrieved via CGBitmapContextGetData and freed.

Actually implementing that logic is beyond the current scope of MallocChecker,
so for now CGBitmapContextCreate goes on our system function exception list.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158579 91177308-0d34-0410-b5e6-96231b3b80d8
lib/StaticAnalyzer/Checkers/MallocChecker.cpp
test/Analysis/malloc.c
test/Analysis/system-header-simulator.h