cs: unbreak Windows build

This commit is contained in:
Matthew Flatt 2019-09-08 06:46:37 -06:00
parent f4fa74e6f2
commit 866c5d41e0
3 changed files with 12 additions and 6 deletions

View File

@ -142,7 +142,7 @@ void racket_boot(int argc, char **argv, char *exec_file, char *run_file,
int cs_compiled_subdir, int is_gui,
int wm_is_gracket_or_x11_arg_count,
char *gracket_guid_or_x11_args,
void *dll_open, void *dll_find_object)
void *dll_open, void *dll_find_object, void *dll_close)
/* exe argument already stripped from argv */
{
#if !defined(RACKET_USE_FRAMEWORK) || !defined(RACKET_AS_BOOT)
@ -160,7 +160,7 @@ void racket_boot(int argc, char **argv, char *exec_file, char *run_file,
if (dlldir)
rktio_set_dll_path((wchar_t *)dlldir);
if (dll_open)
rktio_set_dll_procs(dll_open, dll_find_object);
rktio_set_dll_procs(dll_open, dll_find_object, dll_close);
#endif
Sscheme_init(NULL);

View File

@ -4,7 +4,7 @@ BOOT_EXTERN void racket_boot(int argc, char **argv, char *exec_file, char *run_f
int pos1, int pos2, int pos3,
int cs_compiled_subdir, int is_gui,
int wm_is_gracket_or_x11_arg_count, char *gracket_guid_or_x11_args,
void *ddll_open, void *dll_find_object);
void *ddll_open, void *dll_find_object, void *dll_close);
typedef void (*racket_boot_t)(int argc, char **argv, char *exec_file, char *run_file,
char* boot_exe, long segment_offset,
@ -12,4 +12,4 @@ typedef void (*racket_boot_t)(int argc, char **argv, char *exec_file, char *run_
int pos1, int pos2, int pos3,
int cs_compiled_subdir, int is_gui,
int wm_is_gracket_or_x11_arg_count, char *gracket_guid_or_x11_args,
void *ddll_open, void *dll_find_object);
void *ddll_open, void *dll_find_object, void *dll_close);

View File

@ -34,17 +34,23 @@ static int scheme_utf8_encode(unsigned int *path, int zero_offset, int len,
#ifdef WIN32
typedef void *(*scheme_dll_open_proc)(const char *name, int as_global);
typedef void *(*scheme_dll_find_object_proc)(void *h, const char *name);
typedef void (*scheme_dll_close_proc)(void *h);
static scheme_dll_open_proc embedded_dll_open;
static scheme_dll_find_object_proc scheme_dll_find_object;
static void scheme_set_dll_procs(scheme_dll_open_proc open, scheme_dll_find_object_proc find)
static scheme_dll_close_proc embedded_dll_close;
static void scheme_set_dll_procs(scheme_dll_open_proc open,
scheme_dll_find_object_proc find,
scheme_dll_close_proc close)
{
embedded_dll_open = open;
scheme_dll_find_object = find;
embedded_dll_close = close;
}
# include "../../start/embedded_dll.inc"
#else
# define embedded_dll_open NULL
# define scheme_dll_find_object NULL
# define embedded_dll_close NULL
#endif
char *boot_file_data = "BooT FilE OffsetS:xxxxyyyyyzzzz";
@ -408,7 +414,7 @@ static int bytes_main(int argc, char **argv,
pos1, pos2, pos3,
CS_COMPILED_SUBDIR, RACKET_IS_GUI,
wm_is_gracket_or_x11_arg_count, gracket_guid_or_x11_args,
embedded_dll_open, scheme_dll_find_object);
embedded_dll_open, scheme_dll_find_object, embedded_dll_close);
return 0;
}