History

iso88591toutf8: detect undefined chars and copy as is (fixes utf8 id3v1)

Sigrid Solveig Haflínudóttir committed 2 years ago

Commit 2c7c27b1 parent 1848c042 files · +12 −0Browse files

Unified · Split

2 files
  1. 8859.c +13 −1
  2. input/noise.id3v1.mp3 +0 −0
8859.c+13−1
@@ -2,11 +2,15 @@ · 1 unmodified line
2#include "tagspriv.h"2#include "tagspriv.h"
3 3
4int4int
5iso88591toutf8(uint8_t *o, int osz, const uint8_t *s, int sz)5iso88591toutf8(uint8_t *o0, int osz, const uint8_t *s, int sz)
6{6{
7 uint8_t *o;
7 int i;8 int i;
8 9
10 o = o0;
9 for(i = 0; i < sz && osz > 1 && s[i] != 0; i++){11 for(i = 0; i < sz && osz > 1 && s[i] != 0; i++){
12 if(s[i] >= 0x7f && s[i] <= 0x9f) /* not expecting control chars */
13 goto asis;
10 if(s[i] >= 0xa0 && osz < 3)14 if(s[i] >= 0xa0 && osz < 3)
11 break;15 break;
12 16
@@ -26,4 +30,12 @@ iso88591toutf8(uint8_t *o, int osz, const uint8_t *s, int sz) · 13 unmodified lines
26 30
27 *o = 0;31 *o = 0;
28 return i;32 return i;
33
34asis:
35 /* FIXME - copy within UTF-8 chars boundaries */
36 if(sz >= osz)
37 sz = osz-1;
38 memmove(o0, s, sz);
39 o0[sz] = 0;
40 return sz;
29}41}
input/noise.id3v1.mp3+0−0

Binary file not shown.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t