This fix was checked in on 11/19/2001.
Thanks,
Mike Anderson
[EMAIL PROTECTED] 12/04/01 06:32AM
Hello.
I tried building jakarta-tomcat-connectors-2003.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:
mailto:[EMAIL PROTECTED]
For additional commands, e-mail:
mailto:[EMAIL PROTECTED]
--
To unsubscribe, e-mail: mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]