Revision: 28999
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28999
Author:   campbellbarton
Date:     2010-05-26 12:52:39 +0200 (Wed, 26 May 2010)

Log Message:
-----------
bugfix [#22426] New Thumbnail code crashes when saving
patch from Ken Nign (ken9). (modified slightly)

Modified Paths:
--------------
    trunk/blender/source/blender/windowmanager/intern/wm_files.c

Modified: trunk/blender/source/blender/windowmanager/intern/wm_files.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_files.c        
2010-05-26 10:50:01 UTC (rev 28998)
+++ trunk/blender/source/blender/windowmanager/intern/wm_files.c        
2010-05-26 10:52:39 UTC (rev 28999)
@@ -502,9 +502,7 @@
        
        if(G.background || scene->camera==NULL)
                return;
-       
-       thumb = MEM_mallocN(((2 + (BLEN_THUMB_SIZE * BLEN_THUMB_SIZE))) * 
sizeof(int), "write_file thumb");
-       
+
        /* gets scaled to BLEN_THUMB_SIZE */
        ibuf= ED_view3d_draw_offscreen_imbuf_simple(scene, BLEN_THUMB_SIZE * 2, 
BLEN_THUMB_SIZE * 2, OB_SOLID);
        
@@ -514,17 +512,25 @@
                IMB_scaleImBuf(ibuf, BLEN_THUMB_SIZE, BLEN_THUMB_SIZE);
                
                /* first write into thumb buffer */
+               thumb= MEM_mallocN(((2 + (BLEN_THUMB_SIZE * BLEN_THUMB_SIZE))) 
* sizeof(int), "write_file thumb");
+
                thumb[0] = BLEN_THUMB_SIZE;
                thumb[1] = BLEN_THUMB_SIZE;
+
                memcpy(thumb + 2, ibuf->rect, BLEN_THUMB_SIZE * BLEN_THUMB_SIZE 
* sizeof(int));
                
                /* the image is scaled here */
                ibuf= IMB_thumb_create(path, THB_NORMAL, THB_SOURCE_BLEND, 
ibuf);
-       }
 
-       if (ibuf) {             
-               IMB_freeImBuf(ibuf);
+               if (ibuf)
+                       IMB_freeImBuf(ibuf);
+
+               ibuf= NULL;
        }
+       else {
+               /* '*thumb_pt' needs to stay NULL to prevent a bad thumbnail 
from being handled */
+               thumb= NULL;
+       }
        
        /* must be freed by caller */
        *thumb_pt= thumb;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to