Tk 804.27.0.4: up to date. (from ppm 'upgrade Tk') v5.8.7 built for MSWin32-x86-multi-thread Binary build 815 [211909]
I having having a fork problem with Tk code. I understand there is a patch to fix it. Looks like it was put together for sh to run, which I don't have. So before I spend hours figuring out how to do it, can anyone tell me if the above Tk release contains the fork fix? Thanks Here's some dialog on the matter: # # To apply this patch: # STEP 1: Chdir to the source directory. # STEP 2: Run the 'applypatch' program with this patch file as input. # # If you do not have 'applypatch', it is part of the 'makepatch' package # that you can fetch from the Comprehensive Perl Archive Network: # http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz # In the above URL, 'x' should be 2 or higher. # # To apply this patch without the use of 'applypatch': # STEP 1: Chdir to the source directory. # If you have a decent Bourne-type shell: # STEP 2: Run the shell with this file as input. # If you don't have such a shell, you may need to manually create # the files as shown below. # STEP 3: Run the 'patch' program with this file as input. # # These are the commands needed to create/delete files/directories: # touch 't/fork.t' chmod 0775 't/fork.t' # # This command terminates the shell and need not be executed manually. exit # #### End of Preamble #### #### Patch data follows #### diff -up 'Tk-804.025_beta14/Event/Event.xs' 'Tk-804.025_beta14-perl5.8.3d/Event/Event.xs' Index: ./Event/Event.xs --- ./Event/Event.xs Thu Jan 29 00:08:33 2004 +++ ./Event/Event.xs Sun Feb 8 20:25:16 2004 @@ -1236,7 +1236,25 @@ XS(XS_Tk__Event_INIT) #define pTk_exit(status) TclpExit(status) -#define pTk_END() Tcl_Finalize() +void pTk_END() +{ + dSP; + SV* ret; + int count; + ENTER; + SAVETMPS; + PUSHMARK(SP); + count = call_pv("Tk::MainWindow::IsParentProcess", G_SCALAR); + SPAGAIN; + if (count != 1) croak("Unexpected return value from IsParentProcess"); + ret = POPs; + if (SvTRUE(ret)) { + Tcl_Finalize(); + } + PUTBACK; + FREETMPS; + LEAVE; +} MODULE = Tk PACKAGE = Tk PREFIX = pTk_ diff -up 'Tk-804.025_beta14/Event/t/basic.t' 'Tk-804.025_beta14-perl5.8.3d/Event/t/basic.t' Index: ./Event/t/basic.t --- ./Event/t/basic.t Thu Dec 11 21:21:36 2003 +++ ./Event/t/basic.t Mon Feb 9 02:07:52 2004 @@ -1,3 +1,3 @@ use Test::More (tests => 1); - +use Tk; # needed because of Tk::END use_ok('Tk::Event'); diff -up 'Tk-804.025_beta14/MANIFEST' 'Tk-804.025_beta14-perl5.8.3d/MANIFEST' Index: ./MANIFEST --- ./MANIFEST Thu Jan 29 00:08:33 2004 +++ ./MANIFEST Sun Feb 8 20:07:43 2004 @@ -1847,6 +1847,7 @@ t/fbox.t t/fileevent.t t/fileselect.t t/font.t +t/fork.t t/geomgr.t t/iso8859-1.t t/JP.dat diff -up 'Tk-804.025_beta14/Tk/MainWindow.pm' 'Tk-804.025_beta14-perl5.8.3d/Tk/MainWindow.pm' Index: ./Tk/MainWindow.pm --- ./Tk/MainWindow.pm Sat Dec 27 10:10:04 2003 +++ ./Tk/MainWindow.pm Sun Feb 8 20:07:25 2004 @@ -151,9 +151,14 @@ sub Existing return @Windows; } +sub IsParentProcess +{ + $pid == $$; +} + END { - if ($pid == $$) + if (IsParentProcess()) { foreach my $top (values %Windows) { diff -up /dev/null 'Tk-804.025_beta14-perl5.8.3d/t/fork.t' Index: ./t/fork.t --- ./t/fork.t Thu Jan 1 01:00:00 1970 +++ ./t/fork.t Sun Feb 8 20:40:00 2004 @@ -0,0 +1,18 @@ +#!/usr/bin/perl -w + +use strict; +use Test; +use Tk; + +plan tests => 1; + +my $mw = tkinit; + +if (fork == 0) { + CORE::exit(); +} +select undef, undef, undef, 0.2; +$mw->update; +ok(1); + +__END__ #### End of Patch data #### #### ApplyPatch data follows #### # Data version : 1.0 # Date generated : Mon Feb 9 02:07:58 2004 # Generated by : makepatch 2.00_05 # Recurse directories : Yes # v 'pTk/patchlevel.h' 934 1071174116 33056 # p 'Event/Event.xs' 30806 1076268316 0100440 # p 'Event/t/basic.t' 51 1076288872 0100440 # p 'MANIFEST' 48329 1076267263 0100440 # p 'Tk/MainWindow.pm' 5663 1076267245 0100444 # c 't/fork.t' 0 1076269200 0100775 #### End of ApplyPatch data #### #### End of Patch kit [created: Mon Feb 9 02:07:58 2004] #### #### Patch checksum: 112 2706 60311 #### #### Checksum: 142 3705 13145 #### -- Slaven Rezic - [EMAIL PROTECTED] tkrevdiff - graphical display of diffs between revisions (RCS, CVS or SVN) http://ptktools.sourceforge.net/#tkrevdiff-++**==--++**==--++**==--++... This message was posted through the Stanford campus mailing list server. If you wish to unsubscribe from this mailing list, send the message body of "unsubscribe ptk" to [EMAIL PROTECTED] __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________ Perl-Win32-Users mailing list [email protected] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
