fix Embed.t failure on windows: PERL_SYS_TERM() is implemented
Gurusamy Sarathy [Sun, 11 May 2003 15:37:14 +0000 (15:37 +0000)]
in terms of an exported function rather than as an inlined
macro (latter wants PL_op_mutex which isn't exported as such)

Jarkko: please merge into maint-5.8

p4raw-id: //depot/perl@19484

dosish.h
makedef.pl
win32/win32.c
win32/win32.h

index b3d86e5..6828baf 100644 (file)
--- a/dosish.h
+++ b/dosish.h
@@ -30,6 +30,7 @@
 #else  /* DJGPP */
 #  ifdef WIN32
 #    define PERL_SYS_INIT(c,v) Perl_win32_init(c,v)
+#    define PERL_SYS_TERM()    Perl_win32_term()
 #    define BIT_BUCKET "nul"
 #  else
 #       ifdef NETWARE
@@ -42,7 +43,9 @@
 #  endif
 #endif /* DJGPP */
 
-#define PERL_SYS_TERM() OP_REFCNT_TERM; MALLOC_TERM
+#ifndef PERL_SYS_TERM
+#  define PERL_SYS_TERM() OP_REFCNT_TERM; MALLOC_TERM
+#endif
 #define dXSUB_SYS
 
 /*
index d239d16..74773fb 100644 (file)
@@ -1006,6 +1006,7 @@ if ($PLATFORM =~ /^win(?:32|ce)$/) {
                            Perl_init_os_extras
                            Perl_thread_create
                            Perl_win32_init
+                           Perl_win32_term
                            RunPerl
                            win32_async_check
                            win32_errno
index f3281f3..c409203 100644 (file)
@@ -4884,6 +4884,13 @@ Perl_win32_init(int *argcp, char ***argvp)
 }
 
 void
+Perl_win32_term(void)
+{
+    OP_REFCNT_TERM;
+    MALLOC_TERM;
+}
+
+void
 win32_get_child_IO(child_IO_table* ptbl)
 {
     ptbl->childStdIn   = GetStdHandle(STD_INPUT_HANDLE);
index 01b22f1..f4102c3 100644 (file)
@@ -275,6 +275,7 @@ extern  int mkstemp(const char *path);
 #define  init_os_extras Perl_init_os_extras
 
 DllExport void         Perl_win32_init(int *argcp, char ***argvp);
+DllExport void         Perl_win32_term(void);
 DllExport void         Perl_init_os_extras(void);
 DllExport void         win32_str_os_error(void *sv, DWORD err);
 DllExport int          RunPerl(int argc, char **argv, char **env);