Make MessageLite + Message destructors protected when custom VTable is on.#28323
Draft
copybara-service[bot] wants to merge 1 commit into
Draft
Make MessageLite + Message destructors protected when custom VTable is on.#28323copybara-service[bot] wants to merge 1 commit into
MessageLite + Message destructors protected when custom VTable is on.#28323copybara-service[bot] wants to merge 1 commit into
Conversation
…able is on. The custom vtable experiment changes the `MessageLite` destructor from virtual to a no-op. Calling it directly outside of protobuf will not behave consistently before/after this experiment, so it should be hidden. This will catch code that calls `~MessageLite()` directly on a buffer, which could cause memory leaks if custom VTable is enabled. Custom VTable is only available with destroying deletes, and destroying deletes forward `delete my_message_ptr` to the destroying delete operator. With VTable disabled, there is no destroying delete operator, and the `MessageLite` virtual destructor is called instead, so we can only hide these destructors with custom VTable on. PiperOrigin-RevId: 941519116
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Make
MessageLite+Messagedestructorsprotectedwhen custom VTable is on.The custom vtable experiment changes the
MessageLitedestructor from virtual to a no-op. Calling it directly outside of protobuf will not behave consistently before/after this experiment, so it should be hidden.This will catch code that calls
~MessageLite()directly on a buffer, which could cause memory leaks if custom VTable is enabled.Custom VTable is only available with destroying deletes, and destroying deletes forward
delete my_message_ptrto the destroying delete operator. With VTable disabled, there is no destroying delete operator, and theMessageLitevirtual destructor is called instead, so we can only hide these destructors with custom VTable on.