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;
 }