mirror of https://github.com/ARMmbed/mbed-os.git
Fix copy constructors of Callback objects
->move() operator was not touching unused data fields, therefore leaving uninitialised data and failing the comparison. Fixed by initialising all fields to zero before moving.pull/9424/head
parent
9c98d1572b
commit
207eddc321
|
|
@ -94,6 +94,7 @@ public:
|
||||||
*/
|
*/
|
||||||
Callback(const Callback<R()> &func)
|
Callback(const Callback<R()> &func)
|
||||||
{
|
{
|
||||||
|
memset(this, 0, sizeof(Callback));
|
||||||
if (func._ops) {
|
if (func._ops) {
|
||||||
func._ops->move(this, &func);
|
func._ops->move(this, &func);
|
||||||
}
|
}
|
||||||
|
|
@ -718,6 +719,7 @@ public:
|
||||||
*/
|
*/
|
||||||
Callback(const Callback<R(A0)> &func)
|
Callback(const Callback<R(A0)> &func)
|
||||||
{
|
{
|
||||||
|
memset(this, 0, sizeof(Callback));
|
||||||
if (func._ops) {
|
if (func._ops) {
|
||||||
func._ops->move(this, &func);
|
func._ops->move(this, &func);
|
||||||
}
|
}
|
||||||
|
|
@ -1343,6 +1345,7 @@ public:
|
||||||
*/
|
*/
|
||||||
Callback(const Callback<R(A0, A1)> &func)
|
Callback(const Callback<R(A0, A1)> &func)
|
||||||
{
|
{
|
||||||
|
memset(this, 0, sizeof(Callback));
|
||||||
if (func._ops) {
|
if (func._ops) {
|
||||||
func._ops->move(this, &func);
|
func._ops->move(this, &func);
|
||||||
}
|
}
|
||||||
|
|
@ -1969,6 +1972,7 @@ public:
|
||||||
*/
|
*/
|
||||||
Callback(const Callback<R(A0, A1, A2)> &func)
|
Callback(const Callback<R(A0, A1, A2)> &func)
|
||||||
{
|
{
|
||||||
|
memset(this, 0, sizeof(Callback));
|
||||||
if (func._ops) {
|
if (func._ops) {
|
||||||
func._ops->move(this, &func);
|
func._ops->move(this, &func);
|
||||||
}
|
}
|
||||||
|
|
@ -2596,6 +2600,7 @@ public:
|
||||||
*/
|
*/
|
||||||
Callback(const Callback<R(A0, A1, A2, A3)> &func)
|
Callback(const Callback<R(A0, A1, A2, A3)> &func)
|
||||||
{
|
{
|
||||||
|
memset(this, 0, sizeof(Callback));
|
||||||
if (func._ops) {
|
if (func._ops) {
|
||||||
func._ops->move(this, &func);
|
func._ops->move(this, &func);
|
||||||
}
|
}
|
||||||
|
|
@ -3224,6 +3229,7 @@ public:
|
||||||
*/
|
*/
|
||||||
Callback(const Callback<R(A0, A1, A2, A3, A4)> &func)
|
Callback(const Callback<R(A0, A1, A2, A3, A4)> &func)
|
||||||
{
|
{
|
||||||
|
memset(this, 0, sizeof(Callback));
|
||||||
if (func._ops) {
|
if (func._ops) {
|
||||||
func._ops->move(this, &func);
|
func._ops->move(this, &func);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue