tgsi: use REALLOC for growing token pool
authorKeith Whitwell <keithw@vmware.com>
Thu, 13 Aug 2009 13:27:42 +0000 (14:27 +0100)
committerKeith Whitwell <keithw@vmware.com>
Thu, 13 Aug 2009 13:27:42 +0000 (14:27 +0100)
src/gallium/auxiliary/tgsi/tgsi_ureg.c

index 00ae0e3f06fc22d4c26267dce27ddd2e5e66a838..7e1eb0dc0a0379aa2493105ecbcb5285c6236a98 100644 (file)
@@ -118,7 +118,7 @@ static void tokens_error( struct ureg_tokens *tokens )
 static void tokens_expand( struct ureg_tokens *tokens,
                            unsigned count )
 {
-   union tgsi_any_token *tmp;
+   unsigned old_size = tokens->size * sizeof(unsigned);
 
    if (tokens->tokens == error_tokens)
       goto fail;
@@ -127,18 +127,12 @@ static void tokens_expand( struct ureg_tokens *tokens,
       tokens->size = (1 << ++tokens->order);
    }
 
-   tmp = MALLOC(tokens->size * sizeof(unsigned));
-   if (tmp == NULL) {
-      FREE(tokens->tokens);
+   tokens->tokens = REALLOC(tokens->tokens, 
+                            old_size,
+                            tokens->size * sizeof(unsigned));
+   if (tokens->tokens == NULL) 
       goto fail;
-   }
-
-   if (tokens->count) {
-      memcpy(tmp, tokens->tokens, tokens->count * sizeof tokens->tokens[0] );
-      FREE(tokens->tokens);
-   }
 
-   tokens->tokens = tmp;
    return;
           
 fail: