On Tue, Jun 06, 2023 at 12:45:57PM +0200, Thomas Lamprecht wrote: > Am 06/06/2023 um 11:41 schrieb Dominik Csapak: > >>> +my $untaint_recursive; > >> > >> I got flash backs w.r.t. refcount cycles here keeping all variables, and > >> thus memory > >> inside the body alive forever, don't we need a weaken? > >> > >> E.g., like we had to do in PVE::Status::Graphite's assemble. > > > > mhmm isn't that because there we use variables from outside the > > function? here we only use the parameters themselves > > I'm not 100% sure about the details, but since then, seeing something like > this pattern triggers my cycle instincts, I'd like to have that checked out > closely.
I *do* prefer `my sub` these days. However, for recursive subs you need to `use feature 'current_sub'` to avoid ... well... leaks ;-) So: my sub untaint_recursive : prototype($) { use feature 'current_sub'; my ($arg) = @_; ... # For recursion: __SUB__->($stuff); ... } Given that this function shouldn't be leaky, you could keep it, or even pre-declare the sub to allow recursion: my sub untaint_recursive : prototype($); sub untaint_recursive : prototype($) { <regular code> } however, `perlsub` explicitly states that this, too, can leak ;-) _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel