ObjFW  Artifact Description [5a3f2982c0]

Artifact 5a3f2982c02feaef3512c78ec95bec4add17aa72c9addf2452b530fc4f337451:

  • File src/OFThread.m
    • 2020-01-24 03:03:32 — part of check-in [e7f4f80e23] on branch trunk — runtime: Correctly handle AR pool push during pop

      Getting a pointer and increasing it until we reach the top pointer does
      not work: Releasing an object can temporarily create new autorelease
      pools, which can trigger resizing of "objects" using realloc, which can
      move it to a different address, which will then lead to continuing to
      iterate on a now invalid pointer.

      This is now solved by using an index into "objects" instead. Since we're
      now indexing for the pop, let's use indexes everywhere, as they're more
      readable anyway.

      While debugging this, I noticed that the last pool is popped quite
      frequently, only for a new pool to be pushed immediately again. This
      resulted in a free followed by a malloc every time. Instead, keep the
      pool, but let OFThread explicitly say when to free everything. (user: js, size: 10770) [annotate] [blame] [check-ins using]

    • 2020-03-02 20:24:57 — part of check-in [e3bbb35784] on branch 1.0 — Merge branch 'master' into 1.0 (user: js, size: 10770) [annotate] [blame] [check-ins using]