Fixed char/unsigned char issue with r20. Added unit test for BOM handling.
diff --git a/ini.c b/ini.c
index 963dc25..15546e9 100644
--- a/ini.c
+++ b/ini.c
@@ -79,8 +79,9 @@
start = line;
#if INI_ALLOW_BOM
- if (lineno == 1 && start[0] == 0xEF && start[1] == 0xBB &&
- start[2] == 0xBF) {
+ if (lineno == 1 && (unsigned char)start[0] == 0xEF &&
+ (unsigned char)start[1] == 0xBB &&
+ (unsigned char)start[2] == 0xBF) {
start += 3;
}
#endif
diff --git a/tests/baseline_multi.txt b/tests/baseline_multi.txt
index 57ebc3b..2f4e21e 100644
--- a/tests/baseline_multi.txt
+++ b/tests/baseline_multi.txt
@@ -41,3 +41,6 @@
... name=bob smith;
multi_line.ini: e=0 user=105
bad_multi.ini: e=1 user=105
+... [bom_section]
+... bom_name=bom_value;
+bom.ini: e=0 user=107
diff --git a/tests/baseline_single.txt b/tests/baseline_single.txt
index fe34f49..a847fe9 100644
--- a/tests/baseline_single.txt
+++ b/tests/baseline_single.txt
@@ -37,3 +37,6 @@
... name=bob smith;
multi_line.ini: e=4 user=105
bad_multi.ini: e=1 user=105
+... [bom_section]
+... bom_name=bom_value;
+bom.ini: e=0 user=107
diff --git a/tests/bom.ini b/tests/bom.ini
new file mode 100644
index 0000000..079d09b
--- /dev/null
+++ b/tests/bom.ini
@@ -0,0 +1,2 @@
+[bom_section]
+bom_name=bom_value
\ No newline at end of file
diff --git a/tests/unittest.c b/tests/unittest.c
index 4859ab0..97643ca 100644
--- a/tests/unittest.c
+++ b/tests/unittest.c
@@ -53,5 +53,6 @@
parse("user_error.ini");
parse("multi_line.ini");
parse("bad_multi.ini");
+ parse("bom.ini");
return 0;
}