Subject: Re: some code assumes sizeof(char *) == sizeof(int)
To: None <eeh@netbsd.org, taya@sm.sony.co.jp>
From: None <eeh@netbsd.org>
List: tech-pkg
Date: 02/22/2001 16:43:19
> The correct fix is probably to change the macro to:
>
> #define unwind_protect_int(X) \
> unwind_protect_var(&(X), (char *)(unsigned long)(X), sizeof(X))
>
> (The `unsigned' is optional, but correctly converts 32-bit pointers
> to 64-bit pointers. But then we're probably not dealing with pointers
> anyway.)
I'll test this later.
But this doesn't fix warning at:
*(sv->variable) = (int)sv->desired_setting;
because sv->desired_setting is char *, converting 64bit value to 32bit value.
Then change that to:
*(sv->variable) = (long)sv->desired_setting;
Eduardo