Adding the cast just doesn't seem right. We implicitly cast void* to other things all the time. Why does *this* one break things? I just don't buy the need to do the cast.
Really... void* should be automatically castable to anything. I'm guessing something more subtle is occurring, and the cast is simply hiding that subtlety. Cheers, -g On Sat, May 26, 2001 at 06:12:38PM -0400, Christian Gross wrote: > On Sat, 26 May 2001 14:19:25 -0500, you wrote: > > >I believe this would break type saftey. These are very carefully > >constructed to > >ensure that the proper hook fn is registered for the appropriate hook. > > > >I'll take a look at your patch later today and see what (if) it breaks > >anything, > >or if we were simply missing the "C" namespace wrappers. > > > The problem is that apr_array_push returns a void pointer. And since > pHook is a predefined data type there is a type problem. The extern > "C" wrappers only make the function behave using C linkage. The code > within is still treated as C++. I tried it and the same type cast > error still occured. > > I think the only way to solve is this to use a type cast. But correct > me if I am wrong. > > Christian > > >----- Original Message ----- > >From: "Christian Gross" <[EMAIL PROTECTED]> > >Sent: Saturday, May 26, 2001 1:33 PM > > > > > >I was playing around with hooks and noticed that there is a problem > >with using hooks on C++. The problem was that C++ does not allow a > >type conversion without a type cast. Following is the fix > > > >--------------------------------------------------------------- > >--- c:/httpd2_16/srclib/apr-util/include/apr_hooks.h Wed Apr 4 > >01:35:46 2001 > >+++ c:/httpd/srclib/apr-util/include/apr_hooks.h Sat May 26 > >14:21:58 2001 > >@@ -98,7 +98,7 @@ > > > >_hooks.link_##name=apr_array_make(apr_global_hook_pool,1,sizeof(ns##_LINK_##name##_t)); > >\ > > apr_hook_sort_register(#name,&_hooks.link_##name); \ > > } \ > >- pHook=apr_array_push(_hooks.link_##name); \ > >+ pHook=(ns##_LINK_##name##_t *)apr_array_push(_hooks.link_##name); > >\ > > pHook->pFunc=pf; \ > > pHook->aszPredecessors=aszPre; \ > > pHook->aszSuccessors=aszSucc; \ > > > > > > -- Greg Stein, http://www.lyra.org/
