Cliff Woolley wrote:
On Tue, 7 Dec 2004, Stas Bekman wrote:


Well, I see why it was made like this. this is because of the cleanup
wrapper:


Originally apr_brigade_cleanup() itself was the pool cleanup callback and
thus the void* argument type was necessary.  Later on it was causing
badness on Win32 due (I think) to the APU_DECLARE(), so somebody added
that wrapper function brigade_cleanup() to fix the problem.  The void*
type remained the same because nobody thought it was a problem.

OK

APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data)
{
   apr_bucket_brigade *b = data;
   apr_bucket *e;

shouldn't it be:

   apr_bucket_brigade *b = (apr_bucket_brigade *)data;



Well that's just absurd.  The cast you show here should produce *zero*
difference in the generated code.  The only difference should be how the
compiler's type checker views that statement.  But this is C, not C++.
void* is implicitly compatible with any other pointer type with the same
qualifiers and level of indirection.  Thus there should be no difference
*at all*.

Can you check that (a) it is being compiled as C and not C++
[though if it were being compiled as C++, the above should be an
error since it would be assignment from an incompatible pointer
type], and then (b) compile the two versions and look at the assembly and
tell me what's different about them?  Because I just don't understand how
this could cause a crash.

As explained in the other reply, it's not this code that causes the crash, but (maybe) the wrapper that calls it. The wrapper is autogenerated based on the prototype. I have no details of the crash, I hate talking on behalf of someone, when I don't know the details :( All I know is that 'access violation' is reported on win32.


Anyway, all I'm now asking is to fix the prototype. Thank you.


-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com

Reply via email to