The Racket repository
![]() A `this%` expression used in a finalization callback implicitly referred to `this`, since it's a dynamic reference to the object's class. As a result, the finalizer for `this` refers to `this`, so `this` never becomes collectable. The problem is fixed by lifting the `this%` out of the `lambda`. Less significantly, the finalizer thread in "prepared.rkt" captured various parameters on creation, including the current namespace. If a prepared statement is bound to a module-level variable, then the finalizer thread refers through the namespace to the prepared statement, so the prepared statement can never be finalized. Setting the current namespace to a fresh empty one while creating the thread avoids that specific problem. (Other parameters could cause similar problems, but solving the namespace one works well enough for now.) |
||
---|---|---|
pkgs | ||
racket | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
appveyor.yml | ||
INSTALL.txt | ||
Makefile | ||
README.txt |
This is the source code for the main Racket distribution. See "INSTALL.txt" for information on building Racket. License ------- Racket Copyright (c) 2010-2014 PLT Design Inc. Racket is distributed under the GNU Lesser General Public License (LGPL). This implies that you may link Racket into proprietary applications, provided you follow the rules stated in the LGPL. You can also modify Racket; if you distribute a modified version, you must distribute it under the terms of the LGPL, which in particular states that you must release the source code for the modified software. See racket/src/COPYING_LESSER.txt for more information.