diff mbox

[v7] slirp/misc: Use g_malloc() instead of malloc()

Message ID 1408348310-6628-1-git-send-email-zhang.zhanghailiang@huawei.com
State New
Headers show

Commit Message

Zhanghailiang Aug. 18, 2014, 7:51 a.m. UTC
Here we don't check the return value of malloc() which may fail.
Use the g_malloc() instead, which will abort the program when
there is not enough memory.

Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
---
 slirp/misc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Michael Tokarev Aug. 18, 2014, 11:32 a.m. UTC | #1
18.08.2014 11:51, zhanghailiang пишет:
> Here we don't check the return value of malloc() which may fail.
> Use the g_malloc() instead, which will abort the program when
> there is not enough memory.
> 
> Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>  slirp/misc.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/slirp/misc.c b/slirp/misc.c
> index b8eb74c..f7fe497 100644
> --- a/slirp/misc.c
> +++ b/slirp/misc.c
> @@ -54,7 +54,7 @@ int add_exec(struct ex_list **ex_ptr, int do_pty, char *exec,
>  	}
>  
>  	tmp_ptr = *ex_ptr;
> -	*ex_ptr = (struct ex_list *)malloc(sizeof(struct ex_list));
> +	*ex_ptr = (struct ex_list *)g_malloc(sizeof(struct ex_list));

There's a convinient macro in glib, g_new(typename, numelts).  Also
there's a less commonly used g_renew() which is like realloc, but it
is not applicable here.

>  	(*ex_ptr)->ex_fport = port;
>  	(*ex_ptr)->ex_addr = addr;
>  	(*ex_ptr)->ex_pty = do_pty;
> @@ -235,7 +235,7 @@ strdup(str)
>  {
>  	char *bptr;
>  
> -	bptr = (char *)malloc(strlen(str)+1);
> +	bptr = (char *)g_malloc(strlen(str)+1);
>  	strcpy(bptr, str);
>  
>  	return bptr;

Oh.  And this one should be removed completely.  It is a reimplementation
of strdup() for system which lacks it.  This code should go, we don't build
on such a system anyway and we always have g_strdup().  There's one more
usage of strdup() in this file, btw.

I'm sorry for being so picky, and you're already at v7, but heck.. We should
be more active at reviewing patches :)

Thanks,

/mjt
Jeff Cody Aug. 18, 2014, 8:23 p.m. UTC | #2
On Mon, Aug 18, 2014 at 03:32:21PM +0400, Michael Tokarev wrote:
> 18.08.2014 11:51, zhanghailiang пишет:
> > Here we don't check the return value of malloc() which may fail.
> > Use the g_malloc() instead, which will abort the program when
> > there is not enough memory.
> > 
> > Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
> > Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> > ---
> >  slirp/misc.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/slirp/misc.c b/slirp/misc.c
> > index b8eb74c..f7fe497 100644
> > --- a/slirp/misc.c
> > +++ b/slirp/misc.c
> > @@ -54,7 +54,7 @@ int add_exec(struct ex_list **ex_ptr, int do_pty, char *exec,
> >  	}
> >  
> >  	tmp_ptr = *ex_ptr;
> > -	*ex_ptr = (struct ex_list *)malloc(sizeof(struct ex_list));
> > +	*ex_ptr = (struct ex_list *)g_malloc(sizeof(struct ex_list));
> 
> There's a convinient macro in glib, g_new(typename, numelts).  Also
> there's a less commonly used g_renew() which is like realloc, but it
> is not applicable here.
> 

If you are going to respin anyway, I recommend dropping the
superfluous (struct ex_list *) cast here as well.

> >  	(*ex_ptr)->ex_fport = port;
> >  	(*ex_ptr)->ex_addr = addr;
> >  	(*ex_ptr)->ex_pty = do_pty;
> > @@ -235,7 +235,7 @@ strdup(str)
> >  {
> >  	char *bptr;
> >  
> > -	bptr = (char *)malloc(strlen(str)+1);
> > +	bptr = (char *)g_malloc(strlen(str)+1);
> >  	strcpy(bptr, str);
> >  
> >  	return bptr;
> 
> Oh.  And this one should be removed completely.  It is a reimplementation
> of strdup() for system which lacks it.  This code should go, we don't build
> on such a system anyway and we always have g_strdup().  There's one more
> usage of strdup() in this file, btw.
> 
> I'm sorry for being so picky, and you're already at v7, but heck.. We should
> be more active at reviewing patches :)
> 
> Thanks,
> 
> /mjt
>
Zhanghailiang Aug. 19, 2014, 7:30 a.m. UTC | #3
On 2014/8/18 19:32, Michael Tokarev wrote:
> 18.08.2014 11:51, zhanghailiang пишет:
>> Here we don't check the return value of malloc() which may fail.
>> Use the g_malloc() instead, which will abort the program when
>> there is not enough memory.
>>
>> Signed-off-by: zhanghailiang<zhang.zhanghailiang@huawei.com>
>> Reviewed-by: Alex Bennée<alex.bennee@linaro.org>
>> ---
>>   slirp/misc.c | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/slirp/misc.c b/slirp/misc.c
>> index b8eb74c..f7fe497 100644
>> --- a/slirp/misc.c
>> +++ b/slirp/misc.c
>> @@ -54,7 +54,7 @@ int add_exec(struct ex_list **ex_ptr, int do_pty, char *exec,
>>   	}
>>
>>   	tmp_ptr = *ex_ptr;
>> -	*ex_ptr = (struct ex_list *)malloc(sizeof(struct ex_list));
>> +	*ex_ptr = (struct ex_list *)g_malloc(sizeof(struct ex_list));
>
> There's a convinient macro in glib, g_new(typename, numelts).  Also
> there's a less commonly used g_renew() which is like realloc, but it
> is not applicable here.
>
Hmm, it is a good idea to use g_new instead of g_malloc,
we have to perform type cast for g_malloc.(BTW, i found in qemu there
are several places use g_malloc but not perform appropriate type
coercions)
I will modify this.Thanks :)

>>   	(*ex_ptr)->ex_fport = port;
>>   	(*ex_ptr)->ex_addr = addr;
>>   	(*ex_ptr)->ex_pty = do_pty;
>> @@ -235,7 +235,7 @@ strdup(str)
>>   {
>>   	char *bptr;
>>
>> -	bptr = (char *)malloc(strlen(str)+1);
>> +	bptr = (char *)g_malloc(strlen(str)+1);
>>   	strcpy(bptr, str);
>>
>>   	return bptr;
>
> Oh.  And this one should be removed completely.  It is a reimplementation
> of strdup() for system which lacks it.  This code should go, we don't build

I couldn't agree more, i will removed it.

> on such a system anyway and we always have g_strdup().  There's one more
> usage of strdup() in this file, btw.
>

OK, Thanks.

> I'm sorry for being so picky, and you're already at v7, but heck.. We should
> be more active at reviewing patches :)
>

Aha! ;),i really appreciate your help. I learned a lot. Thanks.

> Thanks,
>
> /mjt
>
> .
>
Michael Tokarev Aug. 19, 2014, 7:32 a.m. UTC | #4
19.08.2014 11:30, zhanghailiang wrote:
[]
> Hmm, it is a good idea to use g_new instead of g_malloc,
> we have to perform type cast for g_malloc.(BTW, i found in qemu there
> are several places use g_malloc but not perform appropriate type
> coercions)

There's no need to perform explicit type conversion from void* to type*.

Thanks,

/mjt
diff mbox

Patch

diff --git a/slirp/misc.c b/slirp/misc.c
index b8eb74c..f7fe497 100644
--- a/slirp/misc.c
+++ b/slirp/misc.c
@@ -54,7 +54,7 @@  int add_exec(struct ex_list **ex_ptr, int do_pty, char *exec,
 	}
 
 	tmp_ptr = *ex_ptr;
-	*ex_ptr = (struct ex_list *)malloc(sizeof(struct ex_list));
+	*ex_ptr = (struct ex_list *)g_malloc(sizeof(struct ex_list));
 	(*ex_ptr)->ex_fport = port;
 	(*ex_ptr)->ex_addr = addr;
 	(*ex_ptr)->ex_pty = do_pty;
@@ -235,7 +235,7 @@  strdup(str)
 {
 	char *bptr;
 
-	bptr = (char *)malloc(strlen(str)+1);
+	bptr = (char *)g_malloc(strlen(str)+1);
 	strcpy(bptr, str);
 
 	return bptr;