summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tag.c2
-rw-r--r--src/utf8.c6
2 files changed, 5 insertions, 3 deletions
diff --git a/src/tag.c b/src/tag.c
index 2fabf5639..63a7719db 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -25,6 +25,7 @@
#include "aac_decode.h"
#include "utils.h"
#include "utf8.h"
+#include "log.h"
#include <sys/stat.h>
#include <stdlib.h>
@@ -61,6 +62,7 @@ void printMpdTag(FILE * fp, MpdTag * tag) {
#define fixUtf8(str) { \
if(str && !validUtf8String(str)) { \
char * temp; \
+ DEBUG("not valid utf8 in tag: %s\n",str); \
temp = asciiStrToUtf8Dup(str); \
free(str); \
str = temp; \
diff --git a/src/utf8.c b/src/utf8.c
index aa427e99b..140316150 100644
--- a/src/utf8.c
+++ b/src/utf8.c
@@ -59,7 +59,7 @@ int validateUtf8Char(unsigned char * utf8Char) {
if(utf8Char[0]>=0xC0 && utf8Char[0]<=0xFD) {
int count = 1;
- unsigned char t = 0x20;
+ unsigned char t = 1 << 5;
int i;
while(count < 6 && (t & utf8Char[0])) {
t = (t >> 1);
@@ -69,7 +69,7 @@ int validateUtf8Char(unsigned char * utf8Char) {
for(i=1;i<=count;i++) {
if(utf8Char[i] < 0x80 || utf8Char[i] > 0xBF) return 0;
}
- return count;
+ return count+1;
}
else return 0;
}
@@ -79,7 +79,7 @@ int validUtf8String(unsigned char * string) {
while(*string) {
ret = validateUtf8Char(string);
- if(!ret) return 0;
+ if(0==ret) return 0;
string+= ret;
}