Alex's memory leak fixes and timeout changes.
[ITFoundation.git] / ITAppleEventTools.m
index 2677636..20c2413 100755 (executable)
@@ -39,7 +39,7 @@ NSAppleEventDescriptor *ITSendAEWithString(NSString *sendString, FourCharCode ev
         ITDebugLog(@"Error: %d:%d at \"%@\"",(int)buildError.fError,buildError.fErrorPos,[sendString substringToIndex:buildError.fErrorPos]);
     }
     
         ITDebugLog(@"Error: %d:%d at \"%@\"",(int)buildError.fError,buildError.fErrorPos,[sendString substringToIndex:buildError.fErrorPos]);
     }
     
-    err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, /*kAEDefaultTimeout*/30, NULL, NULL);
+    err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, /*kAEDefaultTimeout*/60, NULL, NULL);
     
     err = AESizeOfParam(&replyEvent, keyDirectObject, &resultType, &resultSize);
     if (resultSize == 0 || err != 0) {
     
     err = AESizeOfParam(&replyEvent, keyDirectObject, &resultType, &resultSize);
     if (resultSize == 0 || err != 0) {
@@ -49,6 +49,7 @@ NSAppleEventDescriptor *ITSendAEWithString(NSString *sendString, FourCharCode ev
     AEGetParamDesc(&replyEvent, keyDirectObject, resultType, &resultDesc);
     
     recv = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&resultDesc] autorelease];
     AEGetParamDesc(&replyEvent, keyDirectObject, resultType, &resultDesc);
     
     recv = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&resultDesc] autorelease];
+    [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&replyEvent] autorelease];
     if (!err) [recv logDesc];
     
     if (err) {
     if (!err) [recv logDesc];
     
     if (err) {
@@ -86,7 +87,7 @@ NSAppleEventDescriptor *ITSendAEWithStringAndObject(NSString *sendString, const
         ITDebugLog(@"Error: %d:%d at \"%@\"",(int)buildError.fError,buildError.fErrorPos,[sendString substringToIndex:buildError.fErrorPos]);
     }
     err = AEPutParamDesc(&sendEvent, keyDirectObject, object);
         ITDebugLog(@"Error: %d:%d at \"%@\"",(int)buildError.fError,buildError.fErrorPos,[sendString substringToIndex:buildError.fErrorPos]);
     }
     err = AEPutParamDesc(&sendEvent, keyDirectObject, object);
-    err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, /*kAEDefaultTimeout*/30, NULL, NULL);
+    err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, /*kAEDefaultTimeout*/60, NULL, NULL);
     
     err = AESizeOfParam(&replyEvent, keyDirectObject, &resultType, &resultSize);
     if (resultSize == 0 || err != 0) {
     
     err = AESizeOfParam(&replyEvent, keyDirectObject, &resultType, &resultSize);
     if (resultSize == 0 || err != 0) {
@@ -96,6 +97,7 @@ NSAppleEventDescriptor *ITSendAEWithStringAndObject(NSString *sendString, const
     AEGetParamDesc(&replyEvent, keyDirectObject, resultType, &resultDesc);
     
     recv = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&resultDesc] autorelease];
     AEGetParamDesc(&replyEvent, keyDirectObject, resultType, &resultDesc);
     
     recv = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&resultDesc] autorelease];
+    [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&replyEvent] autorelease];
     if (!err) [recv logDesc];
     
     if (err) {
     if (!err) [recv logDesc];
     
     if (err) {
@@ -108,12 +110,8 @@ NSAppleEventDescriptor *ITSendAEWithKey(FourCharCode reqKey, FourCharCode evClas
 {
     //Add error checking...
     pid_t pid;
 {
     //Add error checking...
     pid_t pid;
-    
-       unsigned char *chr = (unsigned char *)malloc(4*sizeof(unsigned char));
-       memcpy(chr, &reqKey, 4);
-       NSString *sendString = [NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('%s'), from:'null'() }", chr];
-       free(chr);
-       const char *usendString = [sendString UTF8String];
+       NSString *sendString = [NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('%c%c%c%c'), from:'null'() }", (reqKey >> 24), (reqKey >> 16) & 0xff, (reqKey >> 8) & 0xff, reqKey & 0xff];
+    const char *usendString = [sendString UTF8String];
     
     AppleEvent sendEvent, replyEvent;
     NSAppleEventDescriptor *send, *recv;
     
     AppleEvent sendEvent, replyEvent;
     NSAppleEventDescriptor *send, *recv;
@@ -137,7 +135,7 @@ NSAppleEventDescriptor *ITSendAEWithKey(FourCharCode reqKey, FourCharCode evClas
         ITDebugLog(@"Error: %d:%d at \"%@\"",(int)buildError.fError,buildError.fErrorPos,[sendString substringToIndex:buildError.fErrorPos]);
     }
     
         ITDebugLog(@"Error: %d:%d at \"%@\"",(int)buildError.fError,buildError.fErrorPos,[sendString substringToIndex:buildError.fErrorPos]);
     }
     
-    err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, /*kAEDefaultTimeout*/30, NULL, NULL);
+    err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, /*kAEDefaultTimeout*/60, NULL, NULL);
     
     err = AESizeOfParam(&replyEvent, keyDirectObject, &resultType, &resultSize);
     if (resultSize == 0 || err != 0) {
     
     err = AESizeOfParam(&replyEvent, keyDirectObject, &resultType, &resultSize);
     if (resultSize == 0 || err != 0) {
@@ -147,6 +145,7 @@ NSAppleEventDescriptor *ITSendAEWithKey(FourCharCode reqKey, FourCharCode evClas
     AEGetParamDesc(&replyEvent, keyDirectObject, resultType, &resultDesc);
     
     recv = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&resultDesc] autorelease];
     AEGetParamDesc(&replyEvent, keyDirectObject, resultType, &resultDesc);
     
     recv = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&resultDesc] autorelease];
+    [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&replyEvent] autorelease];
     if (!err) [recv logDesc];
     
     if (err) {
     if (!err) [recv logDesc];
     
     if (err) {
@@ -172,7 +171,7 @@ NSAppleEventDescriptor *ITSendAE(FourCharCode eClass, FourCharCode eID,const Pro
     cerr2 = AECreateAppleEvent(eClass,eID,&dest,kAutoGenerateReturnID,kAnyTransactionID,&event);
     nse = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&event] autorelease];
     if (!cerr2) [nse logDesc];
     cerr2 = AECreateAppleEvent(eClass,eID,&dest,kAutoGenerateReturnID,kAnyTransactionID,&event);
     nse = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&event] autorelease];
     if (!cerr2) [nse logDesc];
-    err = AESend(&event, &reply, kAENoReply, kAENormalPriority, /*kAEDefaultTimeout*/30, NULL, NULL);
+    err = AESend(&event, &reply, kAENoReply, kAENormalPriority, /*kAEDefaultTimeout*/60, NULL, NULL);
     nsr = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&reply] autorelease];
     [nsr logDesc];
     return nsr;
     nsr = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&reply] autorelease];
     [nsr logDesc];
     return nsr;