-
Notifications
You must be signed in to change notification settings - Fork 83
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
fix memory leak in z_declare_subscriber #262
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From a quick look seems good.
But I suggest you to run valgrind on the z_client_test at least.
Although not necessary to fix the memory leak issue, this is one of the few places where the result of Thank you very much for the fix. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. But have a look at the inline comment.
src/api/api.c
Outdated
suffix[len] = 0; | ||
keyexpr._suffix = suffix; | ||
_z_keyexpr_set_owns_suffix(&keyexpr, false); | ||
} | ||
} | ||
uint16_t id = _z_declare_resource(zs._val, keyexpr); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is declared if suffix allocation fails? It seems that it will declare a keyexpr
with id but no suffix...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It will declare the exact keyexpr that was passed to the subscriber, but will keep the wild suffix, so the bug is not the one you expected, but it is buggy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually was a bug, but not the one you expected. Let's just cancel attempting to declare the resource if we failed to allocate for the suffix, the other steps would probably also fail anyway.
fixes #259