diff -up wildmidi-0.2.2/src/wildmidi_lib.c.abs wildmidi-0.2.2/src/wildmidi_lib.c --- wildmidi-0.2.2/src/wildmidi_lib.c.abs 2004-01-28 19:13:46.000000000 +0100 +++ wildmidi-0.2.2/src/wildmidi_lib.c 2007-07-14 16:54:28.000000000 +0200 @@ -845,7 +845,7 @@ } continue; } else if (strncasecmp(line_buffer, "source ", 7) == 0) { - if (config_dir != NULL) { + if (config_dir != NULL && line_buffer[7] != '/') { new_config = malloc(strlen(config_dir) + strlen(&line_buffer[7]) + 1); if (new_config == NULL) { WM_ERROR(__FUNCTION__, __LINE__, WM_ERR_MEM, "to parse config", errno); @@ -1012,8 +1012,8 @@ if (chr_ptr != NULL) { *chr_ptr = '\0'; } - if (strncasecmp(&line_buffer[(line_ptr + strlen(&line_buffer[line_ptr]) - 5)], ".pat", 4) != 0) { - if (config_dir != NULL) { + if (strncasecmp(&line_buffer[(line_ptr + strlen(&line_buffer[line_ptr]) - 4)], ".pat", 4) != 0) { + if (config_dir != NULL && line_buffer[line_ptr] != '/') { tmp_patch->filename = malloc(strlen(config_dir) + strlen(&line_buffer[line_ptr]) + 5); if (tmp_patch->filename == NULL) { WM_ERROR(__FUNCTION__, __LINE__, WM_ERR_MEM, NULL, 0); @@ -1041,7 +1041,7 @@ } strcat(tmp_patch->filename, ".pat"); } else { - if (config_dir != NULL) { + if (config_dir != NULL && line_buffer[line_ptr] != '/') { tmp_patch->filename = malloc(strlen(config_dir) + strlen(&line_buffer[line_ptr]) + 1); if (tmp_patch->filename == NULL) { WM_ERROR(__FUNCTION__, __LINE__, WM_ERR_MEM, NULL, 0);