qir-alliance / pyqir

PyQIR is a set of APIs for generating, parsing, and evaluating Quantum Intermediate Representation (QIR).
https://qir-alliance.github.io/pyqir
MIT License
54 stars 24 forks source link

Function objects can outlive their parent module #196

Closed bamarsha closed 1 year ago

bamarsha commented 1 year ago

If a function object outlives its parent module, like in this example:

def foo(bitcode: bytes) -> Function:
    return Module.from_bitcode(bitcode).functions[0]

then the returned function is invalid, for example str(foo(bitcode)) can segfault.