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)
 | 
			
		||||
    {
 | 
			
		||||
        memset(this, 0, sizeof(Callback));
 | 
			
		||||
        if (func._ops) {
 | 
			
		||||
            func._ops->move(this, &func);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -718,6 +719,7 @@ public:
 | 
			
		|||
     */
 | 
			
		||||
    Callback(const Callback<R(A0)> &func)
 | 
			
		||||
    {
 | 
			
		||||
        memset(this, 0, sizeof(Callback));
 | 
			
		||||
        if (func._ops) {
 | 
			
		||||
            func._ops->move(this, &func);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1343,6 +1345,7 @@ public:
 | 
			
		|||
     */
 | 
			
		||||
    Callback(const Callback<R(A0, A1)> &func)
 | 
			
		||||
    {
 | 
			
		||||
        memset(this, 0, sizeof(Callback));
 | 
			
		||||
        if (func._ops) {
 | 
			
		||||
            func._ops->move(this, &func);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1969,6 +1972,7 @@ public:
 | 
			
		|||
     */
 | 
			
		||||
    Callback(const Callback<R(A0, A1, A2)> &func)
 | 
			
		||||
    {
 | 
			
		||||
        memset(this, 0, sizeof(Callback));
 | 
			
		||||
        if (func._ops) {
 | 
			
		||||
            func._ops->move(this, &func);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -2596,6 +2600,7 @@ public:
 | 
			
		|||
     */
 | 
			
		||||
    Callback(const Callback<R(A0, A1, A2, A3)> &func)
 | 
			
		||||
    {
 | 
			
		||||
        memset(this, 0, sizeof(Callback));
 | 
			
		||||
        if (func._ops) {
 | 
			
		||||
            func._ops->move(this, &func);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -3224,6 +3229,7 @@ public:
 | 
			
		|||
     */
 | 
			
		||||
    Callback(const Callback<R(A0, A1, A2, A3, A4)> &func)
 | 
			
		||||
    {
 | 
			
		||||
        memset(this, 0, sizeof(Callback));
 | 
			
		||||
        if (func._ops) {
 | 
			
		||||
            func._ops->move(this, &func);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue