Bugfix #33161
authorTon Roosendaal <ton@blender.org>
Tue, 13 Nov 2012 15:36:46 +0000 (15:36 +0000)
committerTon Roosendaal <ton@blender.org>
Tue, 13 Nov 2012 15:36:46 +0000 (15:36 +0000)
The new node that outputs multilayer was using longer names than default.
Caused old code that truncated pass names to 11 chars to fail on loading exr.

This was an old limit in openexr - but that got fixed long ago.

On todo: check current openexr name lenghts, and all code in Blender that
defines pass/layer names.

source/blender/imbuf/intern/openexr/openexr_api.cpp
source/blender/imbuf/intern/openexr/openexr_multi.h

index 1f35a0f5f89d5f3acff9ef57483d23e354ccca02..16f2df9406dac5b32d64a40cd95120cfb648a242 100644 (file)
@@ -881,7 +881,7 @@ void IMB_exr_close(void *handle)
 /* get a substring from the end of the name, separated by '.' */
 static int imb_exr_split_token(const char *str, const char *end, const char **token)
 {
-       int maxlen = end - str;
+       int64_t maxlen = end - str;
        int len = 0;
        while (len < maxlen && *(end - len - 1) != '.') {
                len++;
index 78071975c72616327dcadc62a264b0469d12bed0..376d2401b1c1f46791eafa7bfe2a75615f49c7a0 100644 (file)
 
 /* experiment with more advanced exr api */
 
-/* Note: as for now openexr only supports 32 chars in channel names.
- * This api also supports max 8 channels per pass now. easy to fix! */
-#define EXR_LAY_MAXNAME     51
-#define EXR_PASS_MAXNAME    11
+/* XXX layer+pass name max 64? */
+/* This api also supports max 8 channels per pass now. easy to fix! */
+#define EXR_LAY_MAXNAME     64
+#define EXR_PASS_MAXNAME    64
 #define EXR_TOT_MAXNAME     64
 #define EXR_PASS_MAXCHAN    8