Bug 1608213 - Add redirection for GetThemeMetric, r=jlast.

Differential Revision: https://phabricator.services.mozilla.com/D59390

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Brian Hackett 2020-01-09 19:12:24 +00:00
Родитель de90ee3e51
Коммит 24d0620f93
1 изменённых файлов: 60 добавлений и 90 удалений

Просмотреть файл

@ -2186,13 +2186,12 @@ static SystemRedirection gSystemRedirections[] = {
nullptr, nullptr, Preamble_WaitForever}, nullptr, nullptr, Preamble_WaitForever},
{"socketpair", {"socketpair",
RR_SaveRvalHadErrorNegative<RR_WriteBufferFixedSize<3, 2 * sizeof(int)>>}, RR_SaveRvalHadErrorNegative<RR_WriteBufferFixedSize<3, 2 * sizeof(int)>>},
{"fileport_makeport", {"fileport_makeport", RR_SaveRvalHadErrorNegative<RR_OutParam<1, size_t>>},
RR_SaveRvalHadErrorNegative<RR_WriteBufferFixedSize<1, sizeof(size_t)>>},
{"getsockopt", RR_SaveRvalHadErrorNegative<RR_getsockopt>}, {"getsockopt", RR_SaveRvalHadErrorNegative<RR_getsockopt>},
{"gettimeofday", {"gettimeofday",
RR_SaveRvalHadErrorNegative<RR_Compose< RR_SaveRvalHadErrorNegative<RR_Compose<
RR_WriteOptionalBufferFixedSize<0, sizeof(struct timeval)>, RR_OutParam<0, struct timeval>,
RR_WriteOptionalBufferFixedSize<1, sizeof(struct timezone)>>>, RR_OutParam<1, struct timezone>>>,
nullptr, nullptr, Preamble_PassThrough}, nullptr, nullptr, Preamble_PassThrough},
{"getuid", RR_ScalarRval}, {"getuid", RR_ScalarRval},
{"geteuid", RR_ScalarRval}, {"geteuid", RR_ScalarRval},
@ -2204,56 +2203,41 @@ static SystemRedirection gSystemRedirections[] = {
{"fcntl", RR_SaveRvalHadErrorNegative, Preamble_fcntl, nullptr, {"fcntl", RR_SaveRvalHadErrorNegative, Preamble_fcntl, nullptr,
MiddlemanPreamble_fcntl}, MiddlemanPreamble_fcntl},
{"getattrlist", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<2, 3>>}, {"getattrlist", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<2, 3>>},
{"fstat$INODE64", {"fstat$INODE64", RR_SaveRvalHadErrorNegative<RR_OutParam<1, struct stat>>,
RR_SaveRvalHadErrorNegative<
RR_WriteBufferFixedSize<1, sizeof(struct stat)>>,
nullptr, nullptr, Preamble_SetError}, nullptr, nullptr, Preamble_SetError},
{"lstat$INODE64", {"lstat$INODE64", RR_SaveRvalHadErrorNegative<RR_OutParam<1, struct stat>>,
RR_SaveRvalHadErrorNegative<
RR_WriteBufferFixedSize<1, sizeof(struct stat)>>,
nullptr, nullptr, Preamble_SetError}, nullptr, nullptr, Preamble_SetError},
{"stat$INODE64", {"stat$INODE64", RR_SaveRvalHadErrorNegative<RR_OutParam<1, struct stat>>,
RR_SaveRvalHadErrorNegative<
RR_WriteBufferFixedSize<1, sizeof(struct stat)>>,
nullptr, nullptr, Preamble_SetError}, nullptr, nullptr, Preamble_SetError},
{"statfs$INODE64", {"statfs$INODE64",
RR_SaveRvalHadErrorNegative< RR_SaveRvalHadErrorNegative<RR_OutParam<1, struct statfs>>,
RR_WriteBufferFixedSize<1, sizeof(struct statfs)>>,
nullptr, nullptr, Preamble_SetError}, nullptr, nullptr, Preamble_SetError},
{"fstatfs$INODE64", {"fstatfs$INODE64",
RR_SaveRvalHadErrorNegative< RR_SaveRvalHadErrorNegative<RR_OutParam<1, struct statfs>>,
RR_WriteBufferFixedSize<1, sizeof(struct statfs)>>,
nullptr, nullptr, Preamble_SetError}, nullptr, nullptr, Preamble_SetError},
{"readlink", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<1, 2>>}, {"readlink", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<1, 2>>},
{"__getdirentries64", {"__getdirentries64",
RR_SaveRvalHadErrorNegative<RR_Compose< RR_SaveRvalHadErrorNegative<RR_Compose<
RR_WriteBuffer<1, 2>, RR_WriteBufferFixedSize<3, sizeof(size_t)>>>}, RR_WriteBuffer<1, 2>, RR_OutParam<3, size_t>>>},
{"getdirentriesattr", {"getdirentriesattr",
RR_SaveRvalHadErrorNegative<RR_Compose< RR_SaveRvalHadErrorNegative<RR_Compose<
RR_WriteBufferFixedSize<1, sizeof(struct attrlist)>, RR_WriteBufferFixedSize<1, sizeof(struct attrlist)>,
RR_WriteBuffer<2, 3>, RR_WriteBufferFixedSize<4, sizeof(size_t)>, RR_WriteBuffer<2, 3>,
RR_WriteBufferFixedSize<5, sizeof(size_t)>, RR_OutParam<4, size_t>,
RR_WriteBufferFixedSize<6, sizeof(size_t)>>>}, RR_OutParam<5, size_t>,
{"getrusage", RR_OutParam<6, size_t>>>},
RR_SaveRvalHadErrorNegative< {"getrusage", RR_SaveRvalHadErrorNegative<RR_OutParam<1, struct rusage>>,
RR_WriteBufferFixedSize<1, sizeof(struct rusage)>>,
nullptr, nullptr, Preamble_SetError}, nullptr, nullptr, Preamble_SetError},
{"getrlimit", RR_SaveRvalHadErrorNegative< {"getrlimit", RR_SaveRvalHadErrorNegative<RR_OutParam<1, struct rlimit>>},
RR_WriteBufferFixedSize<1, sizeof(struct rlimit)>>},
{"setrlimit", RR_SaveRvalHadErrorNegative}, {"setrlimit", RR_SaveRvalHadErrorNegative},
{"sigprocmask", {"sigprocmask", RR_SaveRvalHadErrorNegative<RR_OutParam<2, sigset_t>>,
RR_SaveRvalHadErrorNegative<
RR_WriteOptionalBufferFixedSize<2, sizeof(sigset_t)>>,
nullptr, nullptr, Preamble_PassThrough}, nullptr, nullptr, Preamble_PassThrough},
{"sigaltstack", RR_SaveRvalHadErrorNegative< {"sigaltstack", RR_SaveRvalHadErrorNegative<RR_OutParam<2, stack_t>>},
RR_WriteOptionalBufferFixedSize<2, sizeof(stack_t)>>},
{"sigaction", {"sigaction",
RR_SaveRvalHadErrorNegative< RR_SaveRvalHadErrorNegative<RR_OutParam<2, struct sigaction>>},
RR_WriteOptionalBufferFixedSize<2, sizeof(struct sigaction)>>},
{"signal", RR_ScalarRval}, {"signal", RR_ScalarRval},
{"__pthread_sigmask", {"__pthread_sigmask",
RR_SaveRvalHadErrorNegative< RR_SaveRvalHadErrorNegative<RR_OutParam<2, sigset_t>>},
RR_WriteOptionalBufferFixedSize<2, sizeof(sigset_t)>>},
{"__fsgetpath", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<0, 1>>}, {"__fsgetpath", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<0, 1>>},
{"sysconf", RR_ScalarRval}, {"sysconf", RR_ScalarRval},
{"__sysctl", RR_SaveRvalHadErrorNegative<RR_sysctl<2>>}, {"__sysctl", RR_SaveRvalHadErrorNegative<RR_sysctl<2>>},
@ -2263,20 +2247,19 @@ static SystemRedirection gSystemRedirections[] = {
{"__mac_syscall", RR_SaveRvalHadErrorNegative}, {"__mac_syscall", RR_SaveRvalHadErrorNegative},
{"syscall", RR_SaveRvalHadErrorNegative}, {"syscall", RR_SaveRvalHadErrorNegative},
{"getaudit_addr", {"getaudit_addr",
RR_SaveRvalHadErrorNegative< RR_SaveRvalHadErrorNegative<RR_OutParam<0, auditinfo_addr_t>>},
RR_WriteBufferFixedSize<0, sizeof(auditinfo_addr_t)>>},
{"umask", RR_ScalarRval}, {"umask", RR_ScalarRval},
{"__select", {"__select",
RR_SaveRvalHadErrorNegative< RR_SaveRvalHadErrorNegative<
RR_Compose<RR_WriteBufferFixedSize<1, sizeof(fd_set)>, RR_Compose<RR_OutParam<1, fd_set>,
RR_WriteBufferFixedSize<2, sizeof(fd_set)>, RR_OutParam<2, fd_set>,
RR_WriteBufferFixedSize<3, sizeof(fd_set)>, RR_OutParam<3, fd_set>,
RR_WriteOptionalBufferFixedSize<4, sizeof(timeval)>>>, RR_OutParam<4, timeval>>>,
nullptr, nullptr, Preamble_WaitForever}, nullptr, nullptr, Preamble_WaitForever},
{"__process_policy", RR_SaveRvalHadErrorNegative}, {"__process_policy", RR_SaveRvalHadErrorNegative},
{"__kdebug_trace", RR_SaveRvalHadErrorNegative}, {"__kdebug_trace", RR_SaveRvalHadErrorNegative},
{"guarded_kqueue_np", {"guarded_kqueue_np",
RR_SaveRvalHadErrorNegative<RR_WriteBufferFixedSize<0, sizeof(size_t)>>}, RR_SaveRvalHadErrorNegative<RR_OutParam<0, size_t>>},
{"csops", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<2, 3>>}, {"csops", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<2, 3>>},
{"__getlogin", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<0, 1>>}, {"__getlogin", RR_SaveRvalHadErrorNegative<RR_WriteBuffer<0, 1>>},
{"__workq_kernreturn", nullptr, Preamble___workq_kernreturn}, {"__workq_kernreturn", nullptr, Preamble___workq_kernreturn},
@ -2323,22 +2306,22 @@ static SystemRedirection gSystemRedirections[] = {
{"fwrite", RR_ScalarRval}, {"fwrite", RR_ScalarRval},
{"getenv", RR_CStringRval, Preamble_getenv, nullptr, Preamble_Veto<0>}, {"getenv", RR_CStringRval, Preamble_getenv, nullptr, Preamble_Veto<0>},
{"localtime_r", {"localtime_r",
RR_SaveRvalHadErrorZero<RR_Compose< RR_SaveRvalHadErrorZero<RR_Compose<RR_OutParam<1, struct tm>,
RR_WriteBufferFixedSize<1, sizeof(struct tm)>, RR_RvalIsArgument<1>>>, RR_RvalIsArgument<1>>>,
nullptr, nullptr, Preamble_PassThrough}, nullptr, nullptr, Preamble_PassThrough},
{"gmtime_r", {"gmtime_r",
RR_SaveRvalHadErrorZero<RR_Compose< RR_SaveRvalHadErrorZero<RR_Compose<RR_OutParam<1, struct tm>,
RR_WriteBufferFixedSize<1, sizeof(struct tm)>, RR_RvalIsArgument<1>>>, RR_RvalIsArgument<1>>>,
nullptr, nullptr, Preamble_PassThrough}, nullptr, nullptr, Preamble_PassThrough},
{"localtime", nullptr, Preamble_localtime, nullptr, Preamble_PassThrough}, {"localtime", nullptr, Preamble_localtime, nullptr, Preamble_PassThrough},
{"gmtime", nullptr, Preamble_gmtime, nullptr, Preamble_PassThrough}, {"gmtime", nullptr, Preamble_gmtime, nullptr, Preamble_PassThrough},
{"mktime", {"mktime",
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<0, sizeof(struct tm)>>}, RR_Compose<RR_ScalarRval, RR_OutParam<0, struct tm>>},
{"setlocale", RR_CStringRval}, {"setlocale", RR_CStringRval},
{"strftime", RR_Compose<RR_ScalarRval, RR_WriteBufferViaRval<0, 1, 1>>}, {"strftime", RR_Compose<RR_ScalarRval, RR_WriteBufferViaRval<0, 1, 1>>},
{"arc4random", RR_ScalarRval, nullptr, nullptr, Preamble_PassThrough}, {"arc4random", RR_ScalarRval, nullptr, nullptr, Preamble_PassThrough},
{"arc4random_buf", RR_WriteBuffer<0, 1>}, {"arc4random_buf", RR_WriteBuffer<0, 1>},
{"bootstrap_look_up", RR_WriteBufferFixedSize<2, sizeof(mach_port_t)>}, {"bootstrap_look_up", RR_OutParam<2, mach_port_t>},
{"clock_gettime", RR_Compose<RR_ScalarRval, RR_OutParam<1, timespec>>}, {"clock_gettime", RR_Compose<RR_ScalarRval, RR_OutParam<1, timespec>>},
{"clock_get_time", {"clock_get_time",
RR_Compose<RR_ScalarRval, RR_OutParam<1, mach_timespec_t>>}, RR_Compose<RR_ScalarRval, RR_OutParam<1, mach_timespec_t>>},
@ -2466,8 +2449,7 @@ static SystemRedirection gSystemRedirections[] = {
{"CFDictionaryGetValue", RR_ScalarRval, nullptr, {"CFDictionaryGetValue", RR_ScalarRval, nullptr,
EX_Compose<EX_CFTypeArg<0>, EX_CFTypeArg<1>, EX_CFTypeRval>}, EX_Compose<EX_CFTypeArg<0>, EX_CFTypeArg<1>, EX_CFTypeRval>},
{"CFDictionaryGetValueIfPresent", {"CFDictionaryGetValueIfPresent",
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<2, sizeof(const void*)>>, RR_Compose<RR_ScalarRval, RR_OutParam<2, const void*>>, nullptr,
nullptr,
EX_Compose<EX_CFTypeArg<0>, EX_CFTypeArg<1>, EX_CFTypeOutputArg<2>>}, EX_Compose<EX_CFTypeArg<0>, EX_CFTypeArg<1>, EX_CFTypeOutputArg<2>>},
{"CFDictionaryReplaceValue", nullptr, nullptr, {"CFDictionaryReplaceValue", nullptr, nullptr,
EX_Compose<EX_UpdateCFTypeArg<0>, EX_CFTypeArg<1>, EX_CFTypeArg<2>>}, EX_Compose<EX_UpdateCFTypeArg<0>, EX_CFTypeArg<1>, EX_CFTypeArg<2>>},
@ -2536,7 +2518,7 @@ static SystemRedirection gSystemRedirections[] = {
// Argument indexes are off by one here as the CFRange argument uses two // Argument indexes are off by one here as the CFRange argument uses two
// slots. // slots.
RR_Compose<RR_ScalarRval, RR_WriteOptionalBuffer<6, 7>, RR_Compose<RR_ScalarRval, RR_WriteOptionalBuffer<6, 7>,
RR_WriteOptionalBufferFixedSize<8, sizeof(CFIndex)>>}, RR_OutParam<8, CFIndex>>},
{"CFStringGetCharacters", {"CFStringGetCharacters",
// Argument indexes are off by one here as the CFRange argument uses two // Argument indexes are off by one here as the CFRange argument uses two
// slots. // slots.
@ -2562,8 +2544,7 @@ static SystemRedirection gSystemRedirections[] = {
{"CFURLCreateWithString", RR_ScalarRval}, {"CFURLCreateWithString", RR_ScalarRval},
{"CFURLGetFileSystemRepresentation", {"CFURLGetFileSystemRepresentation",
RR_Compose<RR_ScalarRval, RR_WriteBuffer<2, 3>>}, RR_Compose<RR_ScalarRval, RR_WriteBuffer<2, 3>>},
{"CFURLGetFSRef", {"CFURLGetFSRef", RR_Compose<RR_ScalarRval, RR_OutParam<1, FSRef>>},
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<1, sizeof(FSRef)>>},
{"CFUUIDCreate", RR_ScalarRval, nullptr, {"CFUUIDCreate", RR_ScalarRval, nullptr,
EX_Compose<EX_RequireDefaultAllocator<0>, EX_CreateCFTypeRval>}, EX_Compose<EX_RequireDefaultAllocator<0>, EX_CreateCFTypeRval>},
{"CFUUIDCreateString", RR_ScalarRval}, {"CFUUIDCreateString", RR_ScalarRval},
@ -2841,9 +2822,9 @@ static SystemRedirection gSystemRedirections[] = {
// Argument indexes are off by one here as the CFRange argument uses two // Argument indexes are off by one here as the CFRange argument uses two
// slots. // slots.
RR_Compose<RR_FloatRval, RR_Compose<RR_FloatRval,
RR_WriteOptionalBufferFixedSize<3, sizeof(CGFloat)>, RR_OutParam<3, CGFloat>,
RR_WriteOptionalBufferFixedSize<4, sizeof(CGFloat)>, RR_OutParam<4, CGFloat>,
RR_WriteOptionalBufferFixedSize<5, sizeof(CGFloat)>>, RR_OutParam<5, CGFloat>>,
nullptr, nullptr,
EX_Compose<EX_CFTypeArg<0>, EX_ScalarArg<1>, EX_ScalarArg<2>, EX_Compose<EX_CFTypeArg<0>, EX_ScalarArg<1>, EX_ScalarArg<2>,
EX_OutParam<3, CGFloat>, EX_OutParam<4, CGFloat>, EX_OutParam<3, CGFloat>, EX_OutParam<4, CGFloat>,
@ -2853,23 +2834,20 @@ static SystemRedirection gSystemRedirections[] = {
EX_StackArgumentData<sizeof(CGRect)>>}, EX_StackArgumentData<sizeof(CGRect)>>},
{"FSCompareFSRefs", RR_ScalarRval}, {"FSCompareFSRefs", RR_ScalarRval},
{"FSGetVolumeInfo", {"FSGetVolumeInfo",
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<5, sizeof(HFSUniStr255)>, RR_Compose<RR_ScalarRval,
RR_WriteBufferFixedSize<6, sizeof(FSRef)>>}, RR_OutParam<5, HFSUniStr255>,
{"FSFindFolder", RR_OutParam<6, FSRef>>},
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<3, sizeof(FSRef)>>}, {"FSFindFolder", RR_Compose<RR_ScalarRval, RR_OutParam<3, FSRef>>},
{"Gestalt", {"Gestalt", RR_Compose<RR_ScalarRval, RR_OutParam<1, SInt32>>},
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<1, sizeof(SInt32)>>},
{"GetEventClass", RR_ScalarRval}, {"GetEventClass", RR_ScalarRval},
{"GetCurrentEventQueue", RR_ScalarRval}, {"GetCurrentEventQueue", RR_ScalarRval},
{"GetCurrentProcess", {"GetCurrentProcess",
RR_Compose<RR_ScalarRval, RR_Compose<RR_ScalarRval, RR_OutParam<0, ProcessSerialNumber>>},
RR_WriteBufferFixedSize<0, sizeof(ProcessSerialNumber)>>},
{"GetEventAttributes", RR_ScalarRval}, {"GetEventAttributes", RR_ScalarRval},
{"GetEventDispatcherTarget", RR_ScalarRval}, {"GetEventDispatcherTarget", RR_ScalarRval},
{"GetEventKind", RR_ScalarRval}, {"GetEventKind", RR_ScalarRval},
{"HIThemeDrawButton", {"GetThemeMetric", RR_Compose<RR_ScalarRval, RR_OutParam<1, SInt32>>},
RR_Compose<RR_WriteOptionalBufferFixedSize<4, sizeof(HIRect)>, {"HIThemeDrawButton", RR_Compose<RR_OutParam<4, HIRect>, RR_ScalarRval>,
RR_ScalarRval>,
nullptr, nullptr,
EX_Compose<EX_InParam<0, HIRect>, EX_Compose<EX_InParam<0, HIRect>,
EX_InParam<1, HIThemeButtonDrawInfo>, EX_InParam<1, HIThemeButtonDrawInfo>,
@ -2896,9 +2874,7 @@ static SystemRedirection gSystemRedirections[] = {
EX_InParam<1, HIThemeMenuDrawInfo>, EX_InParam<1, HIThemeMenuDrawInfo>,
EX_UpdateCFTypeArg<2>, EX_UpdateCFTypeArg<2>,
EX_ScalarArg<3>>}, EX_ScalarArg<3>>},
{"HIThemeDrawMenuItem", {"HIThemeDrawMenuItem", RR_Compose<RR_OutParam<5, HIRect>, RR_ScalarRval>,
RR_Compose<RR_WriteOptionalBufferFixedSize<5, sizeof(HIRect)>,
RR_ScalarRval>,
nullptr, nullptr,
EX_Compose<EX_InParam<0, HIRect>, EX_Compose<EX_InParam<0, HIRect>,
EX_InParam<1, HIRect>, EX_InParam<1, HIRect>,
@ -2928,7 +2904,7 @@ static SystemRedirection gSystemRedirections[] = {
EX_UpdateCFTypeArg<2>, EX_UpdateCFTypeArg<2>,
EX_ScalarArg<3>>}, EX_ScalarArg<3>>},
{"HIThemeGetGrowBoxBounds", {"HIThemeGetGrowBoxBounds",
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<2, sizeof(HIRect)>>, RR_Compose<RR_ScalarRval, RR_OutParam<2, HIRect>>,
nullptr, nullptr,
EX_Compose<EX_InParam<0, HIPoint>, EX_Compose<EX_InParam<0, HIPoint>,
EX_InParam<1, HIThemeGrowBoxDrawInfo>, EX_InParam<1, HIThemeGrowBoxDrawInfo>,
@ -2938,25 +2914,21 @@ static SystemRedirection gSystemRedirections[] = {
{"IORegistryEntrySearchCFProperty", RR_ScalarRval}, {"IORegistryEntrySearchCFProperty", RR_ScalarRval},
{"LSCopyAllHandlersForURLScheme", RR_ScalarRval}, {"LSCopyAllHandlersForURLScheme", RR_ScalarRval},
{"LSCopyApplicationForMIMEType", {"LSCopyApplicationForMIMEType",
RR_Compose<RR_ScalarRval, RR_Compose<RR_ScalarRval, RR_OutParam<2, CFURLRef>>},
RR_WriteOptionalBufferFixedSize<2, sizeof(CFURLRef)>>},
{"LSCopyItemAttribute", {"LSCopyItemAttribute",
RR_Compose<RR_ScalarRval, RR_Compose<RR_ScalarRval, RR_OutParam<3, CFTypeRef>>},
RR_WriteOptionalBufferFixedSize<3, sizeof(CFTypeRef)>>},
{"LSCopyKindStringForMIMEType", {"LSCopyKindStringForMIMEType",
RR_Compose<RR_ScalarRval, RR_Compose<RR_ScalarRval, RR_OutParam<1, CFStringRef>>},
RR_WriteOptionalBufferFixedSize<1, sizeof(CFStringRef)>>},
{"LSGetApplicationForInfo", {"LSGetApplicationForInfo",
RR_Compose<RR_ScalarRval, RR_Compose<RR_ScalarRval,
RR_WriteOptionalBufferFixedSize<4, sizeof(FSRef)>, RR_OutParam<4, FSRef>,
RR_WriteOptionalBufferFixedSize<5, sizeof(CFURLRef)>>}, RR_OutParam<5, CFURLRef>>},
{"LSGetApplicationForURL", {"LSGetApplicationForURL",
RR_Compose<RR_ScalarRval, RR_Compose<RR_ScalarRval,
RR_WriteOptionalBufferFixedSize<2, sizeof(FSRef)>, RR_OutParam<2, FSRef>,
RR_WriteOptionalBufferFixedSize<3, sizeof(CFURLRef)>>}, RR_OutParam<3, CFURLRef>>},
{"LSCopyDefaultApplicationURLForURL", {"LSCopyDefaultApplicationURLForURL",
RR_Compose<RR_ScalarRval, RR_Compose<RR_ScalarRval, RR_OutParam<2, CFErrorRef>>},
RR_WriteOptionalBufferFixedSize<2, sizeof(CFErrorRef)>>},
{"NSClassFromString", RR_ScalarRval, nullptr, {"NSClassFromString", RR_ScalarRval, nullptr,
EX_Compose<EX_CFTypeArg<0>, EX_CFTypeRval>}, EX_Compose<EX_CFTypeArg<0>, EX_CFTypeRval>},
{"NSRectFill", nullptr, nullptr, EX_NoOp}, {"NSRectFill", nullptr, nullptr, EX_NoOp},
@ -2966,17 +2938,15 @@ static SystemRedirection gSystemRedirections[] = {
{"OSSpinLockLock", nullptr, Preamble_OSSpinLockLock}, {"OSSpinLockLock", nullptr, Preamble_OSSpinLockLock},
{"PMCopyPageFormat", RR_ScalarRval}, {"PMCopyPageFormat", RR_ScalarRval},
{"PMGetAdjustedPaperRect", {"PMGetAdjustedPaperRect",
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<1, sizeof(PMRect)>>}, RR_Compose<RR_ScalarRval, RR_OutParam<1, PMRect>>},
{"PMGetPageFormatPaper", {"PMGetPageFormatPaper",
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<1, sizeof(PMPaper)>>}, RR_Compose<RR_ScalarRval, RR_OutParam<1, PMPaper>>},
{"PMPageFormatCreateDataRepresentation", {"PMPageFormatCreateDataRepresentation",
RR_Compose<RR_ScalarRval, RR_WriteBufferFixedSize<1, sizeof(CFDataRef)>>}, RR_Compose<RR_ScalarRval, RR_OutParam<1, CFDataRef>>},
{"PMPageFormatCreateWithDataRepresentation", {"PMPageFormatCreateWithDataRepresentation",
RR_Compose<RR_ScalarRval, RR_Compose<RR_ScalarRval, RR_OutParam<1, PMPageFormat>>},
RR_WriteBufferFixedSize<1, sizeof(PMPageFormat)>>},
{"PMPaperGetMargins", {"PMPaperGetMargins",
RR_Compose<RR_ScalarRval, RR_Compose<RR_ScalarRval, RR_OutParam<1, PMPaperMargins>>},
RR_WriteBufferFixedSize<1, sizeof(PMPaperMargins)>>},
{"ReleaseEvent", RR_ScalarRval}, {"ReleaseEvent", RR_ScalarRval},
{"RemoveEventFromQueue", RR_ScalarRval}, {"RemoveEventFromQueue", RR_ScalarRval},
{"RetainEvent", RR_ScalarRval}, {"RetainEvent", RR_ScalarRval},