summaryrefslogtreecommitdiff
path: root/libavutil/opt.c
diff options
context:
space:
mode:
authorLukasz Marek <lukasz.m.luki2@gmail.com>2014-11-11 21:17:58 +0100
committerLukasz Marek <lukasz.m.luki2@gmail.com>2014-11-12 23:34:05 +0100
commit173d51c982f1ecaa8d28cd0d8611164be0c9d36d (patch)
tree690fa3f1b2937a7ae1a7f1bae1636a70abe289f8 /libavutil/opt.c
parent5aed6f56d91b9a53f5b872432d911a24cb5f4be8 (diff)
lavu/opt: fix av_opt_get function
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Diffstat (limited to 'libavutil/opt.c')
-rw-r--r--libavutil/opt.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libavutil/opt.c b/libavutil/opt.c
index 0a08e77d6d..4e286ff06f 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -714,6 +714,10 @@ int av_opt_get(void *obj, const char *name, int search_flags, uint8_t **out_val)
return AVERROR(EINVAL);
if (!(*out_val = av_malloc(len*2 + 1)))
return AVERROR(ENOMEM);
+ if (!len) {
+ *out_val[0] = '\0';
+ return 0;
+ }
bin = *(uint8_t**)dst;
for (i = 0; i < len; i++)
snprintf(*out_val + i*2, 3, "%02X", bin[i]);
@@ -729,12 +733,14 @@ int av_opt_get(void *obj, const char *name, int search_flags, uint8_t **out_val)
break;
case AV_OPT_TYPE_DURATION:
i64 = *(int64_t *)dst;
- ret = snprintf(buf, sizeof(buf), "%"PRIi64"d:%02d:%02d.%06d",
+ ret = snprintf(buf, sizeof(buf), "%"PRIi64":%02d:%02d.%06d",
i64 / 3600000000, (int)((i64 / 60000000) % 60),
(int)((i64 / 1000000) % 60), (int)(i64 % 1000000));
break;
case AV_OPT_TYPE_COLOR:
- ret = snprintf(buf, sizeof(buf), "0x%02x%02x%02x%02x", ((int *)dst)[0], ((int *)dst)[1], ((int *)dst)[2], ((int *)dst)[3]);
+ ret = snprintf(buf, sizeof(buf), "0x%02x%02x%02x%02x",
+ (int)((uint8_t *)dst)[0], (int)((uint8_t *)dst)[1],
+ (int)((uint8_t *)dst)[2], (int)((uint8_t *)dst)[3]);
break;
case AV_OPT_TYPE_CHANNEL_LAYOUT:
i64 = *(int64_t *)dst;