diff --git a/source/blender/render/intern/render_result.cc b/source/blender/render/intern/render_result.cc index d4a30ce070a..bfb03cabd27 100644 --- a/source/blender/render/intern/render_result.cc +++ b/source/blender/render/intern/render_result.cc @@ -982,13 +982,15 @@ bool render_result_exr_file_read_path(RenderResult *rr, return true; } -#define FILE_CACHE_MAX (FILE_MAXFILE + FILE_MAXFILE + MAX_ID_NAME + 100) +#define FILE_CACHE_MAX (FILE_MAXDIR + FILE_MAXFILE + MAX_ID_NAME + 100) static void render_result_exr_file_cache_path(Scene *sce, const char *root, char r_path[FILE_CACHE_MAX]) { - char filename_full[FILE_MAX + MAX_ID_NAME + 100], filename[FILE_MAXFILE], dirname[FILE_MAXDIR]; + char filename_full[FILE_MAXFILE + MAX_ID_NAME + 100]; + char filename[FILE_MAXFILE]; + char dirname[FILE_MAXDIR]; char path_digest[16] = {0}; char path_hexdigest[33]; @@ -1006,19 +1008,19 @@ static void render_result_exr_file_cache_path(Scene *sce, BLI_hash_md5_to_hexdigest(path_digest, path_hexdigest); /* Default to *non-volatile* temp dir. */ + char root_buf[FILE_MAX]; if (*root == '\0') { root = BKE_tempdir_base(); } + else if (BLI_path_is_rel(root)) { + STRNCPY(root_buf, root); + BLI_path_abs(root_buf, dirname); + root = root_buf; + } SNPRINTF(filename_full, "cached_RR_%s_%s_%s.exr", filename, sce->id.name + 2, path_hexdigest); BLI_path_join(r_path, FILE_CACHE_MAX, root, filename_full); - if (BLI_path_is_rel(r_path)) { - char path_temp[FILE_MAX]; - STRNCPY(path_temp, r_path); - BLI_path_abs(path_temp, dirname); - BLI_strncpy(r_path, path_temp, FILE_CACHE_MAX); - } } void render_result_exr_file_cache_write(Render *re)