[PATCH 4/7] Convert glx/single2.c:DoGetString() to use asprintf()

Alan Coopersmith alan.coopersmith at oracle.com
Wed Nov 2 17:46:51 PDT 2011


On 11/02/11 04:54, walter harms wrote:
>
>
> Am 01.11.2011 23:42, schrieb Alan Coopersmith:
>> Signed-off-by: Alan Coopersmith<alan.coopersmith at oracle.com>
>> ---
>>   glx/single2.c |    4 +---
>>   1 files changed, 1 insertions(+), 3 deletions(-)
>>
>> diff --git a/glx/single2.c b/glx/single2.c
>> index 9884f40..9f8254b 100644
>> --- a/glx/single2.c
>> +++ b/glx/single2.c
>> @@ -351,12 +351,10 @@ int DoGetString(__GLXclientState *cl, GLbyte *pc, GLboolean need_swap)
>>       }
>>       else if ( name == GL_VERSION ) {
>>   	if ( atof( string )>  atof( GLServerVersion ) ) {
>> -	    buf = malloc( strlen( string ) + strlen( GLServerVersion ) + 4 );
>> -	    if ( buf == NULL ) {
>> +	    if ( asprintf(&buf, "%s (%s)", GLServerVersion, string ) == -1) {
>>   		string = GLServerVersion;
>>   	    }
>>   	    else {
>> -		sprintf( buf, "%s (%s)", GLServerVersion, string );
>>   		string = buf;
>>   	    }
>>   	}
>
> I am not sure that string = GLServerVersion in an OOM condition is the right idea.
> Having an exit(1) gives the system a chance to recover.

I kept the existing handling.   The X server should be more robust than the
average program, since if it goes down, your whole desktop goes with it,
so it's better to let some other program die first to free memory.

-- 
	-Alan Coopersmith-        alan.coopersmith at oracle.com
	 Oracle Solaris Platform Engineering: X Window System



More information about the xorg-devel mailing list