avformat/id3v1: strip trailing whitespace
ID3v1 fields have a fixed size, and they are padded either with zeros, or with spaces. Handle the latter case, instead of putting strings with trailing spaces into the AVDictionary. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
08810a8895
commit
bd78010407
@ -179,7 +179,7 @@ static void get_string(AVFormatContext *s, const char *key,
|
|||||||
const uint8_t *buf, int buf_size)
|
const uint8_t *buf, int buf_size)
|
||||||
{
|
{
|
||||||
int i, c;
|
int i, c;
|
||||||
char *q, str[512];
|
char *q, str[512], *first_free_space = NULL;
|
||||||
|
|
||||||
q = str;
|
q = str;
|
||||||
for(i = 0; i < buf_size; i++) {
|
for(i = 0; i < buf_size; i++) {
|
||||||
@ -188,10 +188,19 @@ static void get_string(AVFormatContext *s, const char *key,
|
|||||||
break;
|
break;
|
||||||
if ((q - str) >= sizeof(str) - 1)
|
if ((q - str) >= sizeof(str) - 1)
|
||||||
break;
|
break;
|
||||||
|
if (c == ' ') {
|
||||||
|
if (!first_free_space)
|
||||||
|
first_free_space = q;
|
||||||
|
} else {
|
||||||
|
first_free_space = NULL;
|
||||||
|
}
|
||||||
*q++ = c;
|
*q++ = c;
|
||||||
}
|
}
|
||||||
*q = '\0';
|
*q = '\0';
|
||||||
|
|
||||||
|
if (first_free_space)
|
||||||
|
*first_free_space = '\0';
|
||||||
|
|
||||||
if (*str)
|
if (*str)
|
||||||
av_dict_set(&s->metadata, key, str, 0);
|
av_dict_set(&s->metadata, key, str, 0);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user