diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 1cd2899c4..12c2b20f4 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -1533,6 +1533,25 @@ bool init_build_paths(String init_filename) { output_name = remove_extension_from_path(output_name); output_name = copy_string(ha, string_trim_whitespace(output_name)); output_path = path_from_string(ha, output_name); + + // Note(Dragos): This is a fix for empty filenames + // Turn the trailing folder into the file name + if (output_path.name.len == 0) { + isize len = output_path.basename.len; + while (len > 1 && output_path.basename[len - 1] != '/') { + len -= 1; + } + // We reached the slash + String old_basename = output_path.basename; + output_path.basename.len = len - 1; // Remove the slash + output_path.name = substring(old_basename, len, old_basename.len); + output_path.basename = copy_string(ha, output_path.basename); + output_path.name = copy_string(ha, output_path.name); + // The old basename is wrong. Delete it + gb_free(ha, old_basename.text); + + + } // Replace extension. if (output_path.ext.len > 0) { diff --git a/src/path.cpp b/src/path.cpp index 6f83c39ea..dbc913e61 100644 --- a/src/path.cpp +++ b/src/path.cpp @@ -107,7 +107,9 @@ String path_to_string(gbAllocator a, Path path) { isize i = 0; gb_memmove(str+i, path.basename.text, path.basename.len); i += path.basename.len; + gb_memmove(str+i, "/", 1); i += 1; + gb_memmove(str+i, path.name.text, path.name.len); i += path.name.len; if (path.ext.len > 0) { gb_memmove(str+i, ".", 1); i += 1; @@ -150,6 +152,7 @@ Path path_from_string(gbAllocator a, String const &path) { return res; } + // Note(Dragos): Is the copy_string required if it's a substring? isize name_start = (res.basename.len > 0) ? res.basename.len + 1 : res.basename.len; res.name = substring(fullpath, name_start, fullpath.len); res.name = remove_extension_from_path(res.name);