From: Jaroslav Kysela Date: Tue, 16 Jan 2018 17:42:02 +0000 (+0100) Subject: transcoding: little cleanups X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a390e507cd1453f1bdd63ecc6e4e21fbd950eac2;p=thirdparty%2Ftvheadend.git transcoding: little cleanups --- diff --git a/src/transcoding/memutils.c b/src/transcoding/memutils.c index 3313fd815..97044fc09 100644 --- a/src/transcoding/memutils.c +++ b/src/transcoding/memutils.c @@ -27,12 +27,14 @@ static char * 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; @@ -46,32 +48,35 @@ str_vjoin(const char *separator, va_list ap) 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; } @@ -101,9 +106,8 @@ str_snprintf(char *str, size_t size, const char *format, ...) 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; } diff --git a/src/transcoding/memutils.h b/src/transcoding/memutils.h index 08233ebab..3ca2c9ebe 100644 --- a/src/transcoding/memutils.h +++ b/src/transcoding/memutils.h @@ -28,28 +28,22 @@ #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) { \ diff --git a/src/transcoding/transcode/stream.c b/src/transcoding/transcode/stream.c index 909aef1c8..2c5c6864c 100644 --- a/src/transcoding/transcode/stream.c +++ b/src/transcoding/transcode/stream.c @@ -124,7 +124,7 @@ tvh_stream_handle(TVHStream *self, th_pkt_t *pkt) if (pkt->pkt_payload && self->context) { return (tvh_context_handle(self->context, pkt) < 0) ? -1 : 0; } - TVHPKT_INCREF(pkt); + pkt_ref_inc(pkt); return tvh_transcoder_deliver(self->transcoder, pkt); }