#include "misc.h"
-
+#include "SecCFRelease.h"
// NOTE: the return may or allocate a fair bit more space then it needs.
// Use it for short lived conversions (or strdup the result).
CFStringRef fmt = CFStringCreateWithCString(NULL, format, kCFStringEncodingUTF8);
CFStringRef str = CFStringCreateWithFormatAndArguments(NULL, NULL, fmt, ap);
va_end(ap);
- CFRelease(fmt);
+ CFReleaseNull(fmt);
CFIndex sz = CFStringGetMaximumSizeForEncoding(CFStringGetLength(str), kCFStringEncodingUTF8);
sz += 1;
CFStringGetBytes(str, CFRangeMake(0, CFStringGetLength(str)), kCFStringEncodingUTF8, '?', FALSE, buf, sz, &used);
} else {
buf = (unsigned char *)"malloc failue during CFfprintf\n";
+ needs_free = false;
}
fwrite(buf, 1, used, f);
free(buf);
}
- CFRelease(str);
+ CFReleaseNull(str);
}
CFErrorRef fancy_error(CFStringRef domain, CFIndex code, CFStringRef description) {
const void *v_ekey = kCFErrorDescriptionKey;
const void *v_description = description;
CFErrorRef err = CFErrorCreateWithUserInfoKeysAndValues(NULL, domain, code, &v_ekey, &v_description, 1);
+ CFAutorelease(err);
return err;
}
void CFSafeRelease(CFTypeRef object) {
if (object) {
- CFRelease(object);
+ CFReleaseNull(object);
}
}
CFfprintf(f, "\t\t\"%@#%@\" [label=\"%@\"];\n", name, attrs[j], attrs[j]);
}
CFfprintf(f, "\t\t\"%@\" [fontcolor=blue, fontsize=20];\n\t}\n");
+ free(attrs);
}
}