1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
-
-
+
+
|
/*
* tclStubCall.c --
*
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#include "tclInt.h"
#ifndef _WIN32
# include <dlfcn.h>
#else
# define dlopen(a,b) (void *)LoadLibraryW(JOIN(L,a))
# define dlsym(a,b) (void *)GetProcAddress((HMODULE)(a),b)
# define dlopen(a, b) (void *)LoadLibraryW(JOIN(L, a))
# define dlsym(a, b) (void *)GetProcAddress((HMODULE)(a), b)
# define dlerror() ""
#endif
MODULE_SCOPE void *tclStubsHandle;
/*
*----------------------------------------------------------------------
|
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
-
+
-
+
+
|
"_Tcl_StaticLibrary", /* "arg" == (void *)6 */
"_Tcl_SetExitProc", /* "arg" == (void *)7 */
"_Tcl_GetMemoryInfo", /* "arg" == (void *)8 */
"_Tcl_SetPreInitScript" /* "arg" == (void *)9 */
};
MODULE_SCOPE const void *nullVersionProc(void) {
return NULL;
return NULL;
}
static const char CANNOTCALL[] = "Cannot call %s from stubbed extension\n";
static const char CANNOTFIND[] = "Cannot find %s: %s\n";
MODULE_SCOPE void *
TclStubCall(void *arg)
TclStubCall(
void *arg)
{
static void *stubFn[] = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
size_t index = PTR2UINT(arg);
if (index >= sizeof(PROCNAME)/sizeof(PROCNAME[0])) {
/* Any other value means Tcl_SetPanicProc() with non-null panicProc */
index = 0;
|