|
From: Max L. <ma...@us...> - 2005-08-20 10:09:55
|
Update of /cvsroot/frontierkernel/Frontier/Common/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2754 Modified Files: langsystypes.c Log Message: Rewrite of getobjspeckeydesc on Carbon because, as of Jaguar, the AEDesc datahandle is opaque so use toolbox accessor functions rather than trying to parse the data structure. Index: langsystypes.c =================================================================== RCS file: /cvsroot/frontierkernel/Frontier/Common/source/langsystypes.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** langsystypes.c 11 Jan 2005 22:48:07 -0000 1.4 --- langsystypes.c 20 Aug 2005 10:09:46 -0000 1.5 *************** *** 1629,1643 **** static boolean getobjspeckeydesc (AEDesc *objdata, OSType desiredkey, AEDesc *keydata) { ! #if TARGET_API_MAC_CARBON == 1 ! ! Handle h; ! ! #else ! register Handle h = (*objdata).dataHandle; ! #endif register byte *p; long ctitems; --- 1629,1664 ---- static boolean getobjspeckeydesc (AEDesc *objdata, OSType desiredkey, AEDesc *keydata) { + + #if TARGET_API_MAC_CARBON == 1 + // MJL 17/08/05: As of Jaguar the AEDesc datahandle is opaque so use toolbox accessor functions rather + // than trying to parse the data structure. + AEKeyword curKeyWord; + OSErr err; + SInt32 i, numItems; + + err = AECountItems((AEDescList *)objdata, &numItems); + if (err != noErr) + goto exit; + + for (i = 1; i <= numItems; i++) { + err = AEGetNthDesc((AEDescList *)objdata, i, typeWildCard, &curKeyWord, keydata); + + if (err != noErr) + goto exit; + + if (curKeyWord == desiredkey) { + goto exit; + } + AEDisposeDesc(keydata); + } ! err = errAEDescNotFound; ! exit: ! return (!oserror (err)); ! #else // #if TARGET_API_MAC_CARBON == 1 + register Handle h = (*objdata).dataHandle; register byte *p; long ctitems; *************** *** 1645,1654 **** OSErr err; - #if TARGET_API_MAC_CARBON == 1 /*PBS 03/14/02: AE OS X fix.*/ - - copydatahandle (objdata, &h); - - #endif - HLock (h); //Code change by Timothy Paustian Saturday, April 29, 2000 11:00:17 PM --- 1666,1669 ---- *************** *** 1691,1694 **** --- 1706,1711 ---- return (!oserror (err)); + + #endif // #if !TARGET_API_MAC_CARBON == 1 } /*getobjspeckeydesc*/ |