[ 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: dev-unsubscr...@qpid.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org > 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: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org