Mercurial > libavcodec.hg
comparison utils.c @ 1031:19de1445beb2 libavcodec
use av_malloc() functions - added av_strdup and av_realloc()
| author | bellard |
|---|---|
| date | Thu, 23 Jan 2003 23:03:09 +0000 |
| parents | 6129c88a6393 |
| children | 8f440ca8e0b0 |
comparison
equal
deleted
inserted
replaced
| 1030:801f2739264a | 1031:19de1445beb2 |
|---|---|
| 31 return NULL; | 31 return NULL; |
| 32 memset(ptr, 0, size); | 32 memset(ptr, 0, size); |
| 33 return ptr; | 33 return ptr; |
| 34 } | 34 } |
| 35 | 35 |
| 36 char *av_strdup(const char *s) | |
| 37 { | |
| 38 char *ptr; | |
| 39 int len; | |
| 40 len = strlen(s) + 1; | |
| 41 ptr = av_malloc(len); | |
| 42 if (!ptr) | |
| 43 return NULL; | |
| 44 memcpy(ptr, s, len); | |
| 45 return ptr; | |
| 46 } | |
| 47 | |
| 48 /** | |
| 49 * realloc which does nothing if the block is large enough | |
| 50 */ | |
| 51 void *av_fast_realloc(void *ptr, int *size, int min_size) | |
| 52 { | |
| 53 if(min_size < *size) | |
| 54 return ptr; | |
| 55 | |
| 56 *size= min_size + 10*1024; | |
| 57 | |
| 58 return av_realloc(ptr, *size); | |
| 59 } | |
| 60 | |
| 61 | |
| 36 /* allocation of static arrays - do not use for normal allocation */ | 62 /* allocation of static arrays - do not use for normal allocation */ |
| 37 static unsigned int last_static = 0; | 63 static unsigned int last_static = 0; |
| 38 static char*** array_static = NULL; | 64 static char*** array_static = NULL; |
| 39 static const unsigned int grow_static = 64; // ^2 | 65 static const unsigned int grow_static = 64; // ^2 |
| 40 void *__av_mallocz_static(void** location, unsigned int size) | 66 void *__av_mallocz_static(void** location, unsigned int size) |
| 45 return NULL; | 71 return NULL; |
| 46 | 72 |
| 47 if (location) | 73 if (location) |
| 48 { | 74 { |
| 49 if (l > last_static) | 75 if (l > last_static) |
| 50 array_static = realloc(array_static, l); | 76 array_static = av_realloc(array_static, l); |
| 51 array_static[last_static++] = (char**) location; | 77 array_static[last_static++] = (char**) location; |
| 52 *location = ptr; | 78 *location = ptr; |
| 53 } | 79 } |
| 54 return ptr; | 80 return ptr; |
| 55 } | 81 } |
| 59 if (array_static) | 85 if (array_static) |
| 60 { | 86 { |
| 61 unsigned i; | 87 unsigned i; |
| 62 for (i = 0; i < last_static; i++) | 88 for (i = 0; i < last_static; i++) |
| 63 { | 89 { |
| 64 free(*array_static[i]); | 90 av_free(*array_static[i]); |
| 65 *array_static[i] = NULL; | 91 *array_static[i] = NULL; |
| 66 } | 92 } |
| 67 free(array_static); | 93 av_free(array_static); |
| 68 array_static = 0; | 94 array_static = 0; |
| 69 } | 95 } |
| 70 last_static = 0; | 96 last_static = 0; |
| 71 } | 97 } |
| 72 | 98 |
