[
https://issues.apache.org/jira/browse/PROTON-2517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17506344#comment-17506344
]
ASF GitHub Bot commented on PROTON-2517:
----------------------------------------
astitcher commented on pull request #362:
URL: https://github.com/apache/qpid-proton/pull/362#issuecomment-1067058621
The save and restore state is needed here because (at least some of) the
pn_data_t values used here come from the user and are not internal to the
proton implementation. And the user left the pn_data_t in one state and we
can't leave it silently in another.
Note that this is true even if the pn_data_t is say an array of symbols
representing a capability list - The current proton API just gives the user the
pn_data_t to modify and the user the user modifies this pn_data_t but at no
point 'gives it back' to proton. This is a really crappy API, but there we are.
The user can assume that it can just keep on modifying this pn_data_t, so we do
have to maintain the cursor state.
The area of where pn_data_t is exposed for this kind of thing is on my near
term list of things to fix!
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
> The new C codec can misinterpret pn_data_t values resulting in unintended
> wire data.
> ------------------------------------------------------------------------------------
>
> Key: PROTON-2517
> URL: https://issues.apache.org/jira/browse/PROTON-2517
> Project: Qpid Proton
> Issue Type: Bug
> Components: proton-c
> Affects Versions: proton-c-0.37.0
> Reporter: Clifford Jansen
> Assignee: Clifford Jansen
> Priority: Major
>
> See the C++ frame trace from
> https://issues.redhat.com/browse/ENTMQCL-3278
> The zero length array is printed instead of a null because the test in
> emit_multiple() from emitters.h fails to set the current node of the
> pn_data_t to the first node. The test
> if (pn_data_type(data) == PN_ARRAY) { //...
> fails and the array processing logic is bypassed, including the lines
> switch (pn_data_get_array(data)) {
> case 0:
> pni_emitter_writef8(emitter, PNE_NULL);
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]