Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ResolveAlias leads to crash




On Jul 28, 2005, at 19:49, Jim Correia wrote:

Please keep replies on the list. I'm happy to help, but only if the help is going to benefit the community at large.

On Jul 28, 2005, at 11:44 AM, Igor Garnov wrote:

Yeah, sure it's the pointer to actual data. pItemAlias is declared as UInt8*, so it should be OK.

No, it is not.

You can't take the address of a pointer that was allocated, cast it to a handle, and pass it off to an API that expects a handle.

What happens when the alias manager does GetHandleSize(alias) or SetHandleSize(alias). It goes boom if you passed it a pointer to a pointer that wasn't a handle.

If you are doing this, don't, and your problem will go away.

Hmm...

here are the lines from Aliases.h:

struct AliasRecord {
OSType userType; /* appl stored type like creator type */
unsigned short aliasSize; /* alias record size in bytes, for appl usage */
};
typedef struct AliasRecord AliasRecord;
typedef AliasRecord * AliasPtr;
typedef AliasPtr * AliasHandle;


I declare a variable like this: UInt8* pItemAlias. Then I allocate memory like this: pItemAlias = NewPtr( aliasSize ); (aliasSize contains the actual alias size), and copy the actual alias data into this allocated memory.

So I could cast my pointer to AliasPtr, couldn't I?
And after that, wouldn't a call like: 'ResolveAlias( 0, &pItemAlias, ... ) be legal?


Otherwise, what can I do to create a valid alias handle with the data I store internally?

Igor


_______________________________________________ Do not post admin requests to the list. They will be ignored. Carbon-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/carbon-dev/email@hidden

This email sent to email@hidden
References: 
 >ResolveAlias leads to crash (From: Igor Garnov <email@hidden>)
 >Re: ResolveAlias leads to crash (From: Jim Correia <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.