Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix [ac601b59bab7] by making only unloading a library from the process if it has an Unload functions. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-branch |
Files: | files | file ages | folders |
SHA3-256: |
f0a6d62a1ade872d886dcd0ab226854c |
User & Date: | pooryorick 2022-03-22 00:46:17.970 |
References
2022-03-22
| ||
00:52 | • Ticket [ac601b59ba] using the Thread package in a debugging build of Tcl results in a segmentation fault at exit status still Open with 3 other changes artifact: 241093ea99 user: pooryorick | |
Context
2022-03-22
| ||
16:49 | Merge 8.6 check-in: 7d6611d6c8 user: jan.nijtmans tags: core-8-branch | |
00:46 | Fix [ac601b59bab7] by making only unloading a library from the process if it has an Unload functions... check-in: f0a6d62a1a user: pooryorick tags: core-8-branch | |
2022-03-21
| ||
09:57 | Fix [4dbfa46caa]: TIP #601 bug: handling of '-buffersize' check-in: dd396e24b7 user: jan.nijtmans tags: core-8-branch | |
Changes
Changes to generic/tclLoad.c.
︙ | ︙ | |||
540 541 542 543 544 545 546 | } /* *---------------------------------------------------------------------- * * Tcl_UnloadObjCmd -- * | | | 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 | } /* *---------------------------------------------------------------------- * * Tcl_UnloadObjCmd -- * * Implements the the "unload" Tcl command. See the * user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. |
︙ | ︙ | |||
760 761 762 763 764 765 766 767 768 769 770 771 772 773 | if (!complain && (code != TCL_OK)) { code = TCL_OK; Tcl_ResetResult(interp); } return code; } static int UnloadLibrary( Tcl_Interp *interp, Tcl_Interp *target, LoadedLibrary *libraryPtr, int keepLibrary, const char *fullFileName, | > > > > > > > > > > > > > > > > > | 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 | if (!complain && (code != TCL_OK)) { code = TCL_OK; Tcl_ResetResult(interp); } return code; } /* *---------------------------------------------------------------------- * * UnloadLibrary -- * * Unloads a library from an interpreter, and also from the process if it * is unloadable, i.e. if it provides an "unload" function. * * Results: * A standard Tcl result. * * Side effects: * See description. * *---------------------------------------------------------------------- */ static int UnloadLibrary( Tcl_Interp *interp, Tcl_Interp *target, LoadedLibrary *libraryPtr, int keepLibrary, const char *fullFileName, |
︙ | ︙ | |||
880 881 882 883 884 885 886 | if (IsStatic(libraryPtr)) { goto done; } /* | | < < | 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 | if (IsStatic(libraryPtr)) { goto done; } /* * The unload function was called succesfully. */ Tcl_MutexLock(&libraryMutex); if (Tcl_IsSafe(target)) { libraryPtr->safeInterpRefCount--; /* * Do not let counter get negative. |
︙ | ︙ | |||
913 914 915 916 917 918 919 | } trustedRefCount = libraryPtr->interpRefCount; safeRefCount = libraryPtr->safeInterpRefCount; Tcl_MutexUnlock(&libraryMutex); code = TCL_OK; if (libraryPtr->safeInterpRefCount <= 0 && libraryPtr->interpRefCount <= 0 | | | 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 | } trustedRefCount = libraryPtr->interpRefCount; safeRefCount = libraryPtr->safeInterpRefCount; Tcl_MutexUnlock(&libraryMutex); code = TCL_OK; if (libraryPtr->safeInterpRefCount <= 0 && libraryPtr->interpRefCount <= 0 && (unloadProc != NULL) && !keepLibrary) { /* * Unload the shared library from the application memory... */ #if defined(TCL_UNLOAD_DLLS) || defined(_WIN32) /* * Some Unix dlls are poorly behaved - registering things like atexit |
︙ | ︙ |
Changes to tests/pkgMkIndex.test.
︙ | ︙ | |||
587 588 589 590 591 592 593 | set script \ "[list pkg_mkIndex -lazy $fullPkgPath [file tail $x] pkga.tcl]" append script \n \ "[list pkg_mkIndex -lazy -load Pkg* $fullPkgPath [file tail $x]]" exec [interpreter] << $script pkgtest::runCreatedIndex {0 {}} -lazy -load Pkg* -- $fullPkgPath pkga[info sharedlibextension] | | | 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 | set script \ "[list pkg_mkIndex -lazy $fullPkgPath [file tail $x] pkga.tcl]" append script \n \ "[list pkg_mkIndex -lazy -load Pkg* $fullPkgPath [file tail $x]]" exec [interpreter] << $script pkgtest::runCreatedIndex {0 {}} -lazy -load Pkg* -- $fullPkgPath pkga[info sharedlibextension] } "0 {}" if {[testConstraint $dll]} { file delete -force [file join $fullPkgPath [file tail $x]] removeFile [file join pkg pkga.tcl] } # Tolerate "namespace import" at the global scope |
︙ | ︙ |