I'm not sure I got your problem right, but you can keep a named copy of your not-to-be-finalized object as long as it needs to be around, so it doesn't go out of scope too early.
Something like: local({ dontFinalizeMe <- obj ## ## code which creates copies, overwrites, and indirectly uses 'obj' ## }) hth, -- Antonio, Fabio Di Narzo, Biostatistician Mount Sinai School of Medicine, NY. 2013/2/12 Thomas Lumley <tlum...@uw.edu>: > Is there some way to prevent finalizers running during a section of code? > > I have a package that includes R objects linked to database tables. To > maintain the call-by-value semantics, tables are copied rather than > modified, and the extra tables are removed by finalizers during garbage > collection. > > However, if the garbage collection occurs in the middle of processing > another SQL query (which is relatively likely, since that's where the > memory allocations are) there are problems with the database interface. > > Since the guarantees for the finalizer are "at most once, not before the > object is out of scope" it seems harmless to be able to prevent finalizers > from running during a particular code block, but I can't see any way to do > it. > > Suggestions? > > -thomas > > > -- > Thomas Lumley > Professor of Biostatistics > University of Auckland > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel