• Ulf Magnusson's avatar
    kconfig: Fix expr_free() E_NOT leak · 5b1374b3
    Ulf Magnusson authored
    Only the E_NOT operand and not the E_NOT node itself was freed, due to
    accidentally returning too early in expr_free(). Outline of leak:
    
    	switch (e->type) {
    	...
    	case E_NOT:
    		expr_free(e->left.expr);
    		return;
    	...
    	}
    	*Never reached, 'e' leaked*
    	free(e);
    
    Fix by changing the 'return' to a 'break'.
    
    Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:
    
    	LEAK SUMMARY:
    	   definitely lost: 44,448 bytes in 1,852 blocks
    	   ...
    
    Summary after the fix:
    
    	LEAK SUMMARY:
    	   definitely lost: 1,608 bytes in 67 blocks
    	   ...
    Signed-off-by: default avatarUlf Magnusson <ulfalizer@gmail.com>
    Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
    5b1374b3
expr.c 26.9 KB