}
err = AESend(&event, &reply, kAENoReply, kAENormalPriority, /*kAEDefaultTimeout*/60, NULL, NULL);
+ AEDisposeDesc(&dest);
+ AEDisposeDesc(&event);
if (err) {
+ AEDisposeDesc(&reply);
return nil;
}
-
return [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&reply] autorelease];
}
}
NSAppleEventDescriptor *ITSendAEWithString(NSString *sendString, FourCharCode evClass, FourCharCode evID, const ProcessSerialNumber *psn) {
+ return ITSendAEWithStringAndTimeout(sendString, evClass, evID, psn, 60);
+}
+
+NSAppleEventDescriptor *ITSendAEWithStringAndTimeout(NSString *sendString, FourCharCode evClass, FourCharCode evID, const ProcessSerialNumber *psn, long timeout) {
pid_t pid;
AppleEvent sendEvent, replyEvent;
AEDesc resultDesc;
return nil;
}
- err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, /*kAEDefaultTimeout*/60, NULL, NULL);
+ err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, /*kAEDefaultTimeout*/timeout, NULL, NULL);
+ AEDisposeDesc(&sendEvent);
if (err) {
ITDebugLog(@"ITSendAEWithString(%@, %@, %@, {%i, %i}): Send Error: %i", sendString, NSStringFromFourCharCode(evClass), NSStringFromFourCharCode(evID), psn->highLongOfPSN, psn->lowLongOfPSN, err);
err = AESizeOfParam(&replyEvent, keyDirectObject, &resultType, &resultSize);
if (resultSize == 0 || err != 0) {
+ AEDisposeDesc(&replyEvent);
return nil;
}
AEGetParamDesc(&replyEvent, keyDirectObject, resultType, &resultDesc);
-
+ AEDisposeDesc(&replyEvent);
return [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&resultDesc] autorelease];
}
AEPutParamDesc(&sendEvent, keyDirectObject, object);
err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, /*kAEDefaultTimeout*/60, NULL, NULL);
+ AEDisposeDesc(&sendEvent);
if (err) {
ITDebugLog(@"ITSendAEWithStringAndObject(%@, <%@>, %@, %@, {%i, %i}): Send Error: %i", sendString, _ITAEDescCarbonDescription(*object), NSStringFromFourCharCode(evClass), NSStringFromFourCharCode(evID), psn->highLongOfPSN, psn->lowLongOfPSN, err);
err = AESizeOfParam(&replyEvent, keyDirectObject, &resultType, &resultSize);
if (resultSize == 0 || err != 0) {
+ AEDisposeDesc(&replyEvent);
return nil;
}
AEGetParamDesc(&replyEvent, keyDirectObject, resultType, &resultDesc);
-
+ AEDisposeDesc(&replyEvent);
return [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&resultDesc] autorelease];
}
\ No newline at end of file