Fix T97527: multiview camera suffix not working with more than 4 characters

Thanks to Germano Cavalcante for finding the solution.
This commit is contained in:
Brecht Van Lommel 2022-04-28 17:10:52 +02:00
parent 853713336f
commit 44b318bd22
Notes: blender-bot 2023-02-14 05:41:57 +01:00
Referenced by issue #97527, Multiview camera suffix limited to four characters for images in compositor.
1 changed files with 9 additions and 10 deletions

View File

@ -3215,26 +3215,25 @@ void BKE_scene_multiview_view_prefix_get(Scene *scene,
char *r_prefix,
const char **r_ext)
{
size_t index_act;
const char *suf_act;
const char *unused;
const char delims[] = {'.', '\0'};
r_prefix[0] = '\0';
/* begin of extension */
index_act = BLI_str_rpartition(name, delims, r_ext, &suf_act);
/* Split filename into base name and extension. */
const size_t basename_len = BLI_str_rpartition(name, delims, r_ext, &unused);
if (*r_ext == nullptr) {
return;
}
BLI_assert(index_act > 0);
UNUSED_VARS_NDEBUG(index_act);
BLI_assert(basename_len > 0);
/* Split base name into prefix and known suffix. */
LISTBASE_FOREACH (SceneRenderView *, srv, &scene->r.views) {
if (BKE_scene_multiview_is_render_view_active(&scene->r, srv)) {
const size_t len = strlen(srv->suffix);
const size_t ext_len = strlen(*r_ext);
if (ext_len >= len && STREQLEN(*r_ext - len, srv->suffix, len)) {
BLI_strncpy(r_prefix, name, strlen(name) - ext_len - len + 1);
const size_t suffix_len = strlen(srv->suffix);
if (basename_len >= suffix_len &&
STREQLEN(name + basename_len - suffix_len, srv->suffix, suffix_len)) {
BLI_strncpy(r_prefix, name, basename_len - suffix_len + 1);
break;
}
}