You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by "TAKAHASHI Hideo(BSD-M1G)" <hi...@bisd.hitachi.co.jp> on 2001/12/04 14:32:34 UTC
isapi_redirect.dll in ajp13-tc4.0
Hello.
I tried building jakarta-tomcat-connectors-20011113.tar.gz for ISAPI
and stepped into some trouble and fixed it.
I tried building jk/native/iis . Not working right away, after some
tracking down, I found out that one of the function pointer calls
were failing because of a calling sequence mismatch between the
caller and callee. On Windows, JK_METHOD is defined to one of those
VC++ keywords that change the stack frame. The keyword existed on the
caller side, but not the callee side. The functions are the virtual
functions of the jk_env type.
On the caller side, JK_METHOD was set.
[from jk_env.h]
struct jk_env {
...
jk_env_objectFactory_t *
(JK_METHOD *getFactory)( jk_env_t *env, char *type, char *name );
/** Register a factory for a type ( channel, worker ).
*/
void (JK_METHOD *registerFactory)(
jk_env_t *env, char *type, char *name,
jk_env_objectFactory_t factory);
On the callee side, it was not set.
[from jk_env.c]
static jk_env_objectFactory_t * jk_env_getFactory(
jk_env_t *env,
char *type,
char *name );
static void JK_METHOD jk_env_registerFactory(jk_env_t *env,
char *type,
char *name,
jk_env_objectFactory_t fact);
...
static jk_env_initEnv( jk_env_t *env, char *id ) {
/* env->logger=NULL; */
/* map_alloc( & env->properties ); */
env->getFactory= (void *)jk_env_getFactory;
env->registerFactory= (void *)jk_env_registerFactory;
...
Removing the (void *) cast where the function table is set will reveal
that the assignment is between incompatible pointer types.
Taking away the cast and either adding JK_METHOD on the function
declaration and implementation, or taking it away from the pointer
variable declarations, this can be solved.
I tried to see if this still remains in the cvs but the server seems to
be overloaded or something. I couldn't check.
--
Hideo Takahashi
Business Solutions Division, Hitachi Ltd.
http://www.hitachi.co.jp/Div/bisd
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>