From: Jonas Oreland Date: June 2 2010 7:27am Subject: bzr commit into mysql-5.1-telco-6.2 branch (jonas:3101) Bug#54168 List-Archive: http://lists.mysql.com/commits/109857 X-Bug: 54168 Message-Id: <20100602072710.E7C939E5BEA@perch.localdomain> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_RLNAQYVCeVd9AhQa/F5sCQ)" --Boundary_(ID_RLNAQYVCeVd9AhQa/F5sCQ) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///home/jonas/src/telco-6.2/ based on revid:jonas@stripped 3101 Jonas Oreland 2010-06-02 ndb - bug#54168 - fix so that sendFragmented doesnt tamper with signal->theData modified: storage/ndb/src/kernel/vm/SimulatedBlock.cpp storage/ndb/src/kernel/vm/VMSignal.hpp === modified file 'storage/ndb/src/kernel/vm/SimulatedBlock.cpp' --- a/storage/ndb/src/kernel/vm/SimulatedBlock.cpp 2009-10-09 09:13:43 +0000 +++ b/storage/ndb/src/kernel/vm/SimulatedBlock.cpp 2010-06-02 07:27:05 +0000 @@ -1973,7 +1973,9 @@ SimulatedBlock::sendFragmentedSignal(Blo } ptr.p->m_callback = c; - if(!c_fragSenderRunning){ + if(!c_fragSenderRunning) + { + SaveSignal<2> save(signal); c_fragSenderRunning = true; ContinueFragmented * sig = (ContinueFragmented*)signal->getDataPtrSend(); sig->type = ContinueFragmented::CONTINUE_SENDING; @@ -2012,7 +2014,9 @@ SimulatedBlock::sendFragmentedSignal(Nod } ptr.p->m_callback = c; - if(!c_fragSenderRunning){ + if(!c_fragSenderRunning) + { + SaveSignal<2> save(signal); c_fragSenderRunning = true; ContinueFragmented * sig = (ContinueFragmented*)signal->getDataPtrSend(); sig->type = ContinueFragmented::CONTINUE_SENDING; @@ -2062,7 +2066,9 @@ SimulatedBlock::sendFragmentedSignal(Blo } tmp.p->m_callback = c; - if(!c_fragSenderRunning){ + if(!c_fragSenderRunning) + { + SaveSignal<2> save(signal); c_fragSenderRunning = true; ContinueFragmented * sig = (ContinueFragmented*)signal->getDataPtrSend(); sig->type = ContinueFragmented::CONTINUE_SENDING; @@ -2105,7 +2111,9 @@ SimulatedBlock::sendFragmentedSignal(Nod } tmp.p->m_callback = c; - if(!c_fragSenderRunning){ + if(!c_fragSenderRunning) + { + SaveSignal<2> save(signal); c_fragSenderRunning = true; ContinueFragmented * sig = (ContinueFragmented*)signal->getDataPtrSend(); sig->type = ContinueFragmented::CONTINUE_SENDING; === modified file 'storage/ndb/src/kernel/vm/VMSignal.hpp' --- a/storage/ndb/src/kernel/vm/VMSignal.hpp 2009-05-26 18:53:34 +0000 +++ b/storage/ndb/src/kernel/vm/VMSignal.hpp 2010-06-02 07:27:05 +0000 @@ -104,6 +104,37 @@ public: void garbage_register(); }; +template +class SaveSignal +{ + Uint32 m_copy[len]; + Signal * m_signal; + +public: + SaveSignal(Signal* signal) { + save(signal); + } + + void save(Signal* signal) { + m_signal = signal; + for (Uint32 i = 0; itheData[i]; + } + + void clear() { m_signal = 0;} + + void restore() { + for (Uint32 i = 0; itheData[i] = m_copy[i]; + } + + ~SaveSignal() { + if (m_signal) + restore(); + clear(); + } +}; + inline Uint32 Signal::getLength() const { --Boundary_(ID_RLNAQYVCeVd9AhQa/F5sCQ) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/jonas@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/jonas@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jonas@stripped # target_branch: file:///home/jonas/src/telco-6.2/ # testament_sha1: 2a17878b1f7883b0049e3d60fdbead5a23761efc # timestamp: 2010-06-02 09:27:10 +0200 # base_revision_id: jonas@stripped # # Begin bundle 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 x6snN/4u5IpwoSDsTw+4 --Boundary_(ID_RLNAQYVCeVd9AhQa/F5sCQ)--