1. 25 Aug, 2017 1 commit
    • Wenzel Jakob's avatar
      Address reference leak issue (fixes #1029) · c14c2762
      Wenzel Jakob authored
      Creating an instance of of a pybind11-bound type caused a reference leak in the
      associated Python type object, which could prevent these from being collected
      upon interpreter shutdown. This commit fixes that issue for all types that are
      defined in a scope (e.g. a module). Unscoped anonymous types (e.g. custom
      iterator types) always retain a positive reference count to prevent their
      collection.
      c14c2762
  2. 22 Aug, 2017 2 commits
  3. 17 Aug, 2017 1 commit
    • Jason Rhinelander's avatar
      Reimplement py::init<...> to use common factory code · c4e18008
      Jason Rhinelander authored
      This reimplements the py::init<...> implementations using the various
      functions added to support `py::init(...)`, and moves the implementing
      structs into `detail/init.h` from `pybind11.h`.  It doesn't simply use a
      factory directly, as this is a very common case and implementation
      without an extra lambda call is a small but useful optimization.
      
      This, combined with the previous lazy initialization, also avoids
      needing placement new for `py::init<...>()` construction: such
      construction now occurs via an ordinary `new Type(...)`.
      
      A consequence of this is that it also fixes a potential bug when using
      multiple inheritance from Python: it was very easy to write classes
      that double-initialize an existing instance which had the potential to
      leak for non-pod classes.  With the new implementation, an attempt to
      call `__init__` on an already-initialized object is now ignored.  (This
      was already done in the previous commit for factory constructors).
      
      This change exposed a few warnings (fixed here) from deleting a pointer
      to a base class with virtual functions but without a virtual destructor.
      These look like legitimate warnings that we shouldn't suppress; this
      adds virtual destructors to the appropriate classes.
      c4e18008
  4. 05 Aug, 2017 2 commits
    • Jason Rhinelander's avatar
      Update all remaining tests to new test styles · 391c7544
      Jason Rhinelander authored
      This udpates all the remaining tests to the new test suite code and
      comment styles started in #898.  For the most part, the test coverage
      here is unchanged, with a few minor exceptions as noted below.
      
      - test_constants_and_functions: this adds more overload tests with
        overloads with different number of arguments for more comprehensive
        overload_cast testing.  The test style conversion broke the overload
        tests under MSVC 2015, prompting the additional tests while looking
        for a workaround.
      
      - test_eigen: this dropped the unused functions `get_cm_corners` and
        `get_cm_corners_const`--these same tests were duplicates of the same
        things provided (and used) via ReturnTester methods.
      
      - test_opaque_types: this test had a hidden dependence on ExampleMandA
        which is now fixed by using the global UserType which suffices for the
        relevant test.
      
      - test_methods_and_attributes: this required some additions to UserType
        to make it usable as a replacement for th...
      391c7544
    • Jason Rhinelander's avatar
  5. 23 Jul, 2017 1 commit
    • Jason Rhinelander's avatar
      Add support custom sized operator deletes (#952) · a03408c8
      Jason Rhinelander authored
      If a class doesn't provide a `T::operator delete(void *)` but does have
      a `T::operator delete(void *, size_t)` the latter is invoked by a
      `delete someT`.  Pybind currently only look for and call the former;
      this commit adds detection and calling of the latter when the former
      doesn't exist.
      a03408c8
  6. 29 Jun, 2017 1 commit
  7. 27 Jun, 2017 2 commits