Changeset 3764:2a2b1eb426c4 in roaraudio for libroar/buffer.c


Ignore:
Timestamp:
05/03/10 14:30:48 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added new buffer function roar_buffer_new_data() to make common alloc case more easy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/buffer.c

    r3517 r3764  
    3636#include "libroar.h" 
    3737 
     38// TODO: convert this to a macro. 
     39// TODO: but still provide a function->symbol 
     40// TODO: so we do not need to change SONAME-Version 
     41// TODO: Clean this up in next SONAME-Version 
    3842int roar_buffer_new      (struct roar_buffer ** buf, size_t len) { 
    39  void * data; 
    40  
    41  if ((data = roar_mm_malloc(len)) == NULL) { 
    42   return -1; 
    43  } 
    44  
    45  if ( roar_buffer_new_no_ma(buf, len, data) == -1 ) { 
    46   roar_mm_free(data); 
     43 return roar_buffer_new_data(buf, len, NULL); 
     44} 
     45 
     46int roar_buffer_new_data (struct roar_buffer ** buf, size_t len, void ** data) { 
     47 void * bufdata; 
     48 
     49 if ((bufdata = roar_mm_malloc(len)) == NULL) { 
     50  return -1; 
     51 } 
     52 
     53 if ( roar_buffer_new_no_ma(buf, len, bufdata) == -1 ) { 
     54  roar_mm_free(bufdata); 
    4755  return -1; 
    4856 } 
     
    5058 if ( roar_buffer_set_flag(*buf, ROAR_BUFFER_FLAG_NOFREE, ROAR_BUFFER_RESET) == -1 ) { 
    5159  roar_buffer_free(*buf); 
    52   roar_mm_free(data); 
    53   return -1; 
    54  } 
     60  roar_mm_free(bufdata); 
     61  return -1; 
     62 } 
     63 
     64 if ( data != NULL ) 
     65  *data = bufdata; 
    5566 
    5667 return 0; 
Note: See TracChangeset for help on using the changeset viewer.