diff --git a/ini.c b/ini.c
index 63b69fc..8809419 100644
--- a/ini.c
+++ b/ini.c
@@ -41,13 +41,13 @@
     return (char*)s;
 }
 
-/* Return pointer to first char c or ';' comment in given string, or pointer to
-   null at end of string if neither found. ';' must be prefixed by a whitespace
-   character to register as a comment. */
-static char* find_char_or_comment(const char* s, char c)
+/* Return pointer to first char (of chars) or ';' comment in given string, or
+   pointer to null at end of string if neither found. ';' must be prefixed by
+   a whitespace character to register as a comment. */
+static char* find_chars_or_comment(const char* s, const char* chars)
 {
     int was_whitespace = 0;
-    while (*s && *s != c && !(was_whitespace && *s == ';')) {
+    while (*s && (!chars || !strchr(chars, *s)) && !(was_whitespace && *s == ';')) {
         was_whitespace = isspace((unsigned char)(*s));
         s++;
     }
@@ -116,7 +116,7 @@
 #endif
         else if (*start == '[') {
             /* A "[section]" line */
-            end = find_char_or_comment(start + 1, ']');
+            end = find_chars_or_comment(start + 1, "]");
             if (*end == ']') {
                 *end = '\0';
                 strncpy0(section, start + 1, sizeof(section));
@@ -129,15 +129,12 @@
         }
         else if (*start && *start != ';') {
             /* Not a comment, must be a name[=:]value pair */
-            end = find_char_or_comment(start, '=');
-            if (*end != '=') {
-                end = find_char_or_comment(start, ':');
-            }
+            end = find_chars_or_comment(start, "=:");
             if (*end == '=' || *end == ':') {
                 *end = '\0';
                 name = rstrip(start);
                 value = lskip(end + 1);
-                end = find_char_or_comment(value, '\0');
+                end = find_chars_or_comment(value, NULL);
                 if (*end == ';')
                     *end = '\0';
                 rstrip(value);
diff --git a/tests/baseline_multi.txt b/tests/baseline_multi.txt
index eb87297..dfc323b 100644
--- a/tests/baseline_multi.txt
+++ b/tests/baseline_multi.txt
@@ -14,6 +14,10 @@
 ... Content-Type=text/html;
 ... foo=bar;
 ... adams=42;
+... funny1=with = equals;
+... funny2=with : colons;
+... funny3=two = equals;
+... funny4=two : colons;
 normal.ini: e=0 user=101
 ... [section1]
 ... name1=value1;
diff --git a/tests/baseline_single.txt b/tests/baseline_single.txt
index e638038..3693085 100644
--- a/tests/baseline_single.txt
+++ b/tests/baseline_single.txt
@@ -14,6 +14,10 @@
 ... Content-Type=text/html;
 ... foo=bar;
 ... adams=42;
+... funny1=with = equals;
+... funny2=with : colons;
+... funny3=two = equals;
+... funny4=two : colons;
 normal.ini: e=0 user=101
 ... [section1]
 ... name1=value1;
diff --git a/tests/baseline_stop_on_first_error.txt b/tests/baseline_stop_on_first_error.txt
index 05dfef8..c5fdbcb 100644
--- a/tests/baseline_stop_on_first_error.txt
+++ b/tests/baseline_stop_on_first_error.txt
@@ -14,6 +14,10 @@
 ... Content-Type=text/html;
 ... foo=bar;
 ... adams=42;
+... funny1=with = equals;
+... funny2=with : colons;
+... funny3=two = equals;
+... funny4=two : colons;
 normal.ini: e=0 user=101
 ... [section1]
 ... name1=value1;
diff --git a/tests/normal.ini b/tests/normal.ini
index bd5bcd7..222b477 100644
--- a/tests/normal.ini
+++ b/tests/normal.ini
@@ -23,3 +23,7 @@
 Content-Type: text/html
 foo:bar
 adams : 42
+funny1 : with = equals
+funny2 = with : colons
+funny3 = two = equals
+funny4 : two : colons
