[linux-mm-cc] Re: [OLPC-devel] Announce: Compressed cache 'pre-alpha-001' release :)

Arnd Bergmann arnd at arndb.de
Thu Jul 27 03:55:31 EDT 2006


On Thursday 27 July 2006 09:29, Nitin Gupta wrote:
> some_func()
> {
>     void *a, *b;
>     a = alloc()
>     if (!a) goto out:
>     b = alloc();
>     ...
> out:
>     if (a) free(a)
>     if (b) free(b)
>     ...
> }
> 
> Here you (correctly) get 'possible uninitialized usage for b' warning. 
> That's why I initialize those local variables.

Well, I'd prefer to write this as 

some_func()
{
    void *a, *b;
    int ret;
    ret = -ENOMEM;
    a = alloc();
    if (!a)
	goto out_a;
    b = alloc();
    if (!b)
	goto out_b;
    ...
    ret = 0;
    free(b);    
out_b:
    free(a);
out_a:
    return ret;
}

Note:
 - statement after if() on following line
 - no variables initialized on declaration (ret could be)
 - only clean up what you created.
 - kfree(NULL); is ok

	Arnd <><


More information about the linux-mm-cc mailing list