Originally Posted by
Zeus_
Your ReplyToQ, MsgID and Format are all char arrays, and you haven't passed them as their & equivalent so it only makes sense to do the same for Persistence. As everything is already a pointer, and memcpy expects a void* and a const void*, pass them without the &.
> Is that correct?
Yep
This is my complete memcpy-part. In that case, it should work now (all of my members are char [] and HyqcmqprParms is my struct):
Code:
const BASBuffer & buffer = msg->buffer();
const char * data = buffer.getBuffer();
MQLONG dataLength = buffer.tell();
m_msgParms = new HyqcmqprParms(); //create new object on heap
memset(m_msgParms, 0, sizeof (*m_msgParms)); // set all members to 0
memcpy(m_msgParms.m_eyeCatcher, validEyeCatcher, sizeof(m_msgParms.m_eyeCatcher)); //const char
memcpy(m_msgParms.m_version, version_1_0, sizeof(m_msgParms.m_version)); //const char
memcpy(m_msgParms.m_mqprQueueMgr, msgDescriptor.ReplyToQMgr, sizeof(m_msgParms.m_mqprQueueMgr));
memcpy(m_msgParms.m_mqprQueue, m_queueinfo.m_queueName, sizeof(m_msgParms.m_mqprQueue)); //const char
memcpy(m_msgParms.m_mqprReplyQueue, msgDescriptor.ReplyToQ, sizeof(m_msgParms.m_mqprReplyQueue));
memcpy(m_msgParms.m_mqprMessageP, &data, sizeof(m_msgParms.m_mqprMessageP));
memcpy(m_msgParms.m_mqprMessageL, dataLength, sizeof(m_msgParms.m_mqprMessageL));
memcpy(m_msgParms.m_mqprMessageId, msgDescriptor.MsgId, sizeof(m_msgParms.m_mqprMessageId));
memcpy(m_msgParms.m_mqprCorrelId, msgDescriptor.CorrelId, sizeof(m_msgParms.m_mqprCorrelId));
memcpy(m_msgParms.m_mqprCommitScope, putMsgOptions.Options, sizeof(m_msgParms.m_mqprCommitScope));
memcpy(m_msgParms.m_mqprFormat, msgDescriptor.Format, sizeof(m_msgParms.m_mqprFormat));
memcpy(m_msgParms.m_mqprPersistency, msgDescriptor.Persistence, sizeof(m_msgParms.m_mqprPersistency));
memcpy(m_msgParms.m_mqprPriority, msgDescriptor.Priority, sizeof(m_msgParms.m_mqprPriority));
memcpy(m_msgParms.m_mqprExpiry, msgDescriptor.Expiry, sizeof(m_msgParms.m_mqprExpiry));
memcpy(m_msgParms.m_mqprTargetEntity, ' ', sizeof(m_msgParms.m_mqprTargetEntity));
memcpy(m_msgParms.m_mqprSwid, ' ', sizeof(m_msgParms.m_mqprSwid));
memcpy(m_msgParms.m_reserved1, ' ', sizeof(m_msgParms.m_reserved1));