diff options
author | Steve Huston <shuston@riverace.com> | 2002-07-12 16:40:58 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2002-07-12 16:40:58 +0000 |
commit | c3d85b768905d96bccadbbd7046cb840592b09ba (patch) | |
tree | 1d73ffafcefb3368287e0a8bef42c9c544ab802d | |
parent | b5625192119eac5ea28c3253ec02a76ebf092db6 (diff) | |
download | ATCD-c3d85b768905d96bccadbbd7046cb840592b09ba.tar.gz |
ChangeLogTag:Fri Jul 12 12:37:42 2002 Steve Huston <shuston@riverace.com>
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-03a | 7 | ||||
-rw-r--r-- | ace/DLL_Manager.cpp | 13 | ||||
-rw-r--r-- | ace/Parse_Node.cpp | 12 |
4 files changed, 34 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index 6c07d51b297..97cb904023e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Jul 12 12:37:42 2002 Steve Huston <shuston@riverace.com> + + * ace/DLL_Manager.cpp: + * ace/Parse_Node.cpp: g++ complains that ISO C++ won't allow cast + from void * to func ptr... so cast void * to ptrdiff_t, then to + func ptr. + Fri Jul 12 12:15:49 2002 Steve Huston <shuston@riverace.com> * ace/Timer_Heap_T.cpp (grow_heap): Fix compile warning. diff --git a/ChangeLogs/ChangeLog-03a b/ChangeLogs/ChangeLog-03a index 6c07d51b297..97cb904023e 100644 --- a/ChangeLogs/ChangeLog-03a +++ b/ChangeLogs/ChangeLog-03a @@ -1,3 +1,10 @@ +Fri Jul 12 12:37:42 2002 Steve Huston <shuston@riverace.com> + + * ace/DLL_Manager.cpp: + * ace/Parse_Node.cpp: g++ complains that ISO C++ won't allow cast + from void * to func ptr... so cast void * to ptrdiff_t, then to + func ptr. + Fri Jul 12 12:15:49 2002 Steve Huston <shuston@riverace.com> * ace/Timer_Heap_T.cpp (grow_heap): Fix compile warning. diff --git a/ace/DLL_Manager.cpp b/ace/DLL_Manager.cpp index 59fec231b24..d1edd19046c 100644 --- a/ace/DLL_Manager.cpp +++ b/ace/DLL_Manager.cpp @@ -461,9 +461,18 @@ ACE_DLL_Manager::unload_dll (ACE_DLL_Handle *dll_handle, int force_unload) // Declare the type of the symbol: typedef int (*dll_unload_policy)(void); dll_unload_policy the_policy = 0; + void *unload_policy_ptr = + dll_handle->symbol (ACE_TEXT ("_get_dll_unload_policy"), 1); +#if defined (__GNUG__) + // g++ won't allow void*->func* + ptrdiff_t temp_p = + ACE_reinterpret_cast (ptrdiff_t, unload_policy_ptr); the_policy = - ACE_reinterpret_cast (dll_unload_policy, - dll_handle->symbol (ACE_TEXT ("_get_dll_unload_policy"), 1)); + ACE_reinterpret_cast (dll_unload_policy, temp_p); +#else + the_policy = + ACE_reinterpret_cast (dll_unload_policy, unload_policy_ptr); +#endif /* __GNUG__ */ if (the_policy != 0) unload = ACE_BIT_DISABLED (the_policy (), ACE_DLL_UNLOAD_POLICY_LAZY); diff --git a/ace/Parse_Node.cpp b/ace/Parse_Node.cpp index 788207faf02..3e3818b3e71 100644 --- a/ace/Parse_Node.cpp +++ b/ace/Parse_Node.cpp @@ -477,9 +477,8 @@ ACE_Function_Node::symbol (ACE_Service_Object_Exterminator *gobbler) // object. ACE_TCHAR *function_name = ACE_const_cast (ACE_TCHAR *, this->function_name_); - func = ACE_reinterpret_cast (ACE_Service_Factory_Ptr, - this->dll_.symbol (function_name)); - if (func == 0) + void *func_p = this->dll_.symbol (function_name); + if (func_p == 0) { ace_yyerrno++; @@ -496,6 +495,13 @@ ACE_Function_Node::symbol (ACE_Service_Object_Exterminator *gobbler) return 0; } } +#if defined (__GNUG__) + // g++ won't allow void*->func* + ptrdiff_t temp_p = ACE_reinterpret_cast (ptrdiff_t, func_p); + func = ACE_reinterpret_cast (ACE_Service_Factory_Ptr, temp_p); +#else + func = ACE_reinterpret_cast (ACE_Service_Factory_Ptr, func_p); +#endif /* __GNUG__ */ // Invoke the factory function and record it's return value. this->symbol_ = (*func) (gobbler); |