in parson.c [350:390]
static void remove_comments(_Nt_array_ptr<char> string, _Nt_array_ptr<const char> start_token, _Nt_array_ptr<const char> end_token) {
int in_string = 0, escaped = 0;
size_t i;
char current_char;
size_t start_token_len = strlen(start_token);
size_t end_token_len = strlen(end_token);
if (start_token_len == 0 || end_token_len == 0) {
return;
}
while ((current_char = *string) != '\0') {
if (current_char == '\\' && !escaped) {
escaped = 1;
string++;
continue;
} else if (current_char == '\"' && !escaped) {
in_string = !in_string;
// TODO: Can't prove this
} else {
_Unchecked {
char* unchecked_string = (char*)string;
if (!in_string && strncmp(unchecked_string, start_token, start_token_len) == 0) {
for(i = 0; i < start_token_len; i++) {
unchecked_string[i] = ' ';
}
unchecked_string = unchecked_string + start_token_len;
char* ptr_ = strstr(unchecked_string, end_token);
if (!ptr_) {
return;
}
for (i = 0; i < (ptr_ - unchecked_string) + end_token_len; i++) {
unchecked_string[i] = ' ';
}
string = _Assume_bounds_cast<_Nt_array_ptr<char>>(ptr_ + end_token_len - 1, count(0));
}
} // end _Unchecked
}
escaped = 0;
string++;
}
}