mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-02 10:32:56 +00:00
[C API] Fix several null pointer dereferences.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286704 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
be3001891b
commit
b1cfc87891
@ -1842,12 +1842,16 @@ void LLVMAddAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
|
||||
|
||||
unsigned LLVMGetAttributeCountAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx) {
|
||||
auto *ASN = AttributeSetNode::get(unwrap<Function>(F)->getAttributes(), Idx);
|
||||
if (!ASN)
|
||||
return 0;
|
||||
return ASN->getNumAttributes();
|
||||
}
|
||||
|
||||
void LLVMGetAttributesAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
|
||||
LLVMAttributeRef *Attrs) {
|
||||
auto *ASN = AttributeSetNode::get(unwrap<Function>(F)->getAttributes(), Idx);
|
||||
if (!ASN)
|
||||
return;
|
||||
for (auto A: make_range(ASN->begin(), ASN->end()))
|
||||
*Attrs++ = wrap(A);
|
||||
}
|
||||
@ -2173,6 +2177,8 @@ unsigned LLVMGetCallSiteAttributeCount(LLVMValueRef C,
|
||||
LLVMAttributeIndex Idx) {
|
||||
auto CS = CallSite(unwrap<Instruction>(C));
|
||||
auto *ASN = AttributeSetNode::get(CS.getAttributes(), Idx);
|
||||
if (!ASN)
|
||||
return 0;
|
||||
return ASN->getNumAttributes();
|
||||
}
|
||||
|
||||
@ -2180,6 +2186,8 @@ void LLVMGetCallSiteAttributes(LLVMValueRef C, LLVMAttributeIndex Idx,
|
||||
LLVMAttributeRef *Attrs) {
|
||||
auto CS = CallSite(unwrap<Instruction>(C));
|
||||
auto *ASN = AttributeSetNode::get(CS.getAttributes(), Idx);
|
||||
if (!ASN)
|
||||
return;
|
||||
for (auto A: make_range(ASN->begin(), ASN->end()))
|
||||
*Attrs++ = wrap(A);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user