}
cmd = (const struct load_command*)(((char*)cmd)+cmd->cmdsize);
}
+ // no thread local storage in image: should never happen
+ if ( size == 0 )
+ return NULL;
// allocate buffer and fill with template
void* buffer = malloc(size);
}
-void tlv_load_notification(const struct mach_header* mh, intptr_t slide)
+static void tlv_load_notification(const struct mach_header* mh, intptr_t slide)
{
// This is called on all images, even those without TLVs. So we want this to be fast.
// The linker sets MH_HAS_TLV_DESCRIPTORS so we don't have to search images just to find the don't have TLVs.
pthread_setspecific(tlv_terminators_key, list);
}
else {
- if ( list->allocCount == list->allocCount ) {
+ if ( list->useCount == list->allocCount ) {
// handle resizing allocation
uint32_t newAllocCount = list->allocCount * 2;
size_t newAllocSize = offsetof(struct TLVTerminatorList, entries[newAllocCount]);