mrkn / pycall.rb

Calling Python functions from the Ruby language
MIT License
1.05k stars 72 forks source link

Yet Another memleak with str(list) #169

Closed mknkmyzk closed 1 year ago

mknkmyzk commented 1 year ago

Sorry, I found another memleak.

e.g.

require 'pycall/import'
include PyCall::Import

pyimport :gc

yyy = PyCall.eval("[0] * 1000000")
zzz = PyCall::List.(PyCall.eval("range(1000000)"))
1000000.times{
  yyy.to_s  # memleak
  zzz.to_s  # memleak
  PyCall.eval("'0' * 1000000") # memleak
  PyCall::LibPython::Helpers.str(zzz.__pyptr__) # memleak

  gc.collect()
  GC.start
}
mrkn commented 1 year ago

@mknkmyzk Thank you very much!!