Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove self-reference in PelIfd::$maker_notes #7

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

saemy
Copy link

@saemy saemy commented Oct 4, 2023

Removes the self-reference in the PelIfd::$maker_notes array as described in issue #6.

Fixes: #6

`PelIfd::$maker_notes["parent"]` is always `$this` (there is only one caller of
`PelIfd::setMakerNotes()`). However, adding `$this` to the array leads to a
reference of a `PelIfd` instance to itself. As a result that `PelIfd` instance
can not be cleaned up right away after all references to it go away (as the
ref_count remains at 1 - the one to itself).
Only at garbage collection time the garbage cycle is detected and that instance
is cleaned up.

This is an issue in case big images are processed one after another. In that
scenario `PelIfd::$maker_notes['data']` contains the full image data (i.e.
multiple MB) and is only released upon garbage collection time - which is not
right away. Garbage memory is piling up and running out of memory is easily
possible and the program might crash with `"Fatal error:  Allowed memory size
of xxx bytes exhausted"`.

Removes the self-reference in the `PelIfd::$maker_notes` array.

fixes: FileEye#6
@mondrake
Copy link

mondrake commented Oct 7, 2023

Thank you, the changes are sensible, however I am not keen to touch maker note related code for the moment. Test coverage is very fragile for this part.

We need first to address #8 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Self-reference to $this in PelIfd::$maker_notes
2 participants