str_add(const char *sep, const char *str)
{
size_t sep_len = strlen(sep), str_len = strlen(str);
- char *result = NULL;
+ char *result = malloc(sep_len + str_len + 1);
- if ((result = calloc(1, sep_len + str_len + 1))) {
+ if (result) {
if (str_len > 0) {
- strncpy(result, sep, sep_len);
- strncat(result, str, str_len);
+ strcpy(result, sep);
+ strcat(result, str);
+ } else {
+ result[0] = '\0';
}
}
return result;
char *str = NULL, *tmp_result = NULL, *result = NULL;
size_t str_len = 0, result_size = 1;
- if ((result = calloc(1, result_size))) {
- while ((va_str = va_arg(ap, const char *))) {
- if (strlen(va_str)) {
- if ((str = str_add(strlen(result) ? sep : "", va_str))) {
- if ((str_len = strlen(str))) {
- result_size += str_len;
- if ((tmp_result = realloc(result, result_size))) {
- result = tmp_result;
- strncat(result, str, str_len);
- }
- else {
- str_clear(result);
- }
- }
- str_clear(str);
- }
- else {
- str_clear(result);
- }
- if (!result) {
- break;
+ result = calloc(1, result_size);
+ if (result == NULL)
+ return NULL;
+ while ((va_str = va_arg(ap, const char *))) {
+ str_len = strlen(va_str);
+ if (str_len == 0)
+ continue;
+ str = str_add(result[0] ? sep : "", va_str);
+ if (str) {
+ str_len = strlen(str);
+ if (str_len) {
+ if ((tmp_result = realloc(result, result_size + str_len))) {
+ result = tmp_result;
+ strcpy(result + result_size - 1, str);
+ result_size += str_len;
+ } else {
+ goto reterr;
}
}
+ str_clear(str);
+ } else {
+ goto reterr;
}
}
return result;
+
+reterr:
+ free(result);
+ return NULL;
}
uint8_t *
pktbuf_copy_data(pktbuf_t *pb)
{
- uint8_t *data = av_mallocz(pb->pb_size);
- if (data) {
+ uint8_t *data = av_malloc(pb->pb_size);
+ if (data)
memcpy(data, pb->pb_data, pb->pb_size);
- }
return data;
}
#define TVH_INPUT_BUFFER_MAX_SIZE (INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE)
-
-#define TVHPKT_INCREF pkt_ref_inc
-
-#define TVHPKT_DECREF pkt_ref_dec
-
#define TVHPKT_CLEAR(ptr) \
do { \
th_pkt_t *_tmp = (ptr); \
if (_tmp != NULL) { \
(ptr) = NULL; \
- TVHPKT_DECREF(_tmp); \
+ pkt_ref_dec(_tmp); \
} \
} while (0)
#define TVHPKT_SET(ptr, pkt) \
do { \
- TVHPKT_INCREF((pkt)); \
+ pkt_ref_inc((pkt)); \
TVHPKT_CLEAR((ptr)); \
(ptr) = (pkt); \
} while (0)
-
#define str_clear(str) \
do { \
if ((str) != NULL) { \