Fix scan_includes matching the word "include" in strings.

This commit is contained in:
yenatch 2018-03-10 18:17:05 -05:00
parent 12070ca500
commit 8efa0dcfb0
1 changed files with 13 additions and 1 deletions

View File

@ -48,9 +48,20 @@ void scan_file(char* filename) {
buffer = strchr(buffer, '\n'); buffer = strchr(buffer, '\n');
if (!buffer) { if (!buffer) {
fprintf(stderr, "%s: no newline at end of file\n", filename); fprintf(stderr, "%s: no newline at end of file\n", filename);
break;
} }
break; break;
case '"':
buffer++;
buffer = strchr(buffer, '"');
if (!buffer) {
fprintf(stderr, "%s: unterminated string\n", filename);
break;
}
buffer++;
break;
case 'i': case 'i':
case 'I': case 'I':
if ((strncmp(buffer, "INCBIN", 6) == 0) || (strncmp(buffer, "incbin", 6) == 0)) { if ((strncmp(buffer, "INCBIN", 6) == 0) || (strncmp(buffer, "incbin", 6) == 0)) {
@ -60,9 +71,10 @@ void scan_file(char* filename) {
} }
if (is_incbin || is_include) { if (is_incbin || is_include) {
buffer = strchr(buffer, '"'); buffer = strchr(buffer, '"');
if (!buffer++) { if (!buffer) {
break; break;
} }
buffer++;
int length = strcspn(buffer, "\""); int length = strcspn(buffer, "\"");
char *include = malloc(length + 1); char *include = malloc(length + 1);
strncpy(include, buffer, length); strncpy(include, buffer, length);