int i,j;
MonoDl *module = NULL;
gboolean cached = FALSE;
+ gpointer addr = NULL;
g_assert (method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL);
"Searching for '%s'.", import);
if (piinfo->piflags & PINVOKE_ATTRIBUTE_NO_MANGLE) {
- error_msg = mono_dl_symbol (module, import, &piinfo->addr);
+ error_msg = mono_dl_symbol (module, import, &addr);
} else {
char *mangled_name = NULL, *mangled_name2 = NULL;
int mangle_charset;
#endif
for (mangle_param_count = 0; mangle_param_count <= (need_param_count ? 256 : 0); mangle_param_count += 4) {
- if (piinfo->addr)
+ if (addr)
continue;
mangled_name = (char*)import;
mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_DLLIMPORT,
"Probing '%s'.", mangled_name2);
- error_msg = mono_dl_symbol (module, mangled_name2, &piinfo->addr);
+ error_msg = mono_dl_symbol (module, mangled_name2, &addr);
- if (piinfo->addr)
+ if (addr)
mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_DLLIMPORT,
"Found as '%s'.", mangled_name2);
else
}
}
- if (!piinfo->addr) {
+ if (!addr) {
g_free (error_msg);
if (exc_class) {
*exc_class = "EntryPointNotFoundException";
}
return NULL;
}
- return piinfo->addr;
+ piinfo->addr = addr;
+ return addr;
}
/*