Revision: 26263
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26263
Author:   blendix
Date:     2010-01-25 22:58:00 +0100 (Mon, 25 Jan 2010)

Log Message:
-----------
Fix #20820: multires subdivide crash.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/multires.c
    trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c

Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c   2010-01-25 
21:10:33 UTC (rev 26262)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c   2010-01-25 
21:58:00 UTC (rev 26263)
@@ -85,11 +85,11 @@
 static int multires_get_level(Object *ob, MultiresModifierData *mmd, int 
render)
 {
        if(render)
-               return get_render_subsurf_level(&mmd->modifier.scene->r, 
mmd->renderlvl);
+               return (mmd->modifier.scene)? 
get_render_subsurf_level(&mmd->modifier.scene->r, mmd->renderlvl): 
mmd->renderlvl;
        else if(ob->mode == OB_MODE_SCULPT)
                return mmd->sculptlvl;
        else
-               return get_render_subsurf_level(&mmd->modifier.scene->r, 
mmd->lvl);
+               return (mmd->modifier.scene)? 
get_render_subsurf_level(&mmd->modifier.scene->r, mmd->lvl): mmd->lvl;
 }
 
 static void multires_set_tot_level(Object *ob, MultiresModifierData *mmd, int 
lvl)

Modified: trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c        
2010-01-25 21:10:33 UTC (rev 26262)
+++ trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c        
2010-01-25 21:58:00 UTC (rev 26263)
@@ -2506,7 +2506,7 @@
        CCGDerivedMesh *result;
 
        if(editMode) {
-               int levels= get_render_subsurf_level(&smd->modifier.scene->r, 
smd->levels);
+               int levels= (smd->modifier.scene)? 
get_render_subsurf_level(&smd->modifier.scene->r, smd->levels): smd->levels;
 
                smd->emCache = _getSubSurf(smd->emCache, levels, useAging, 0,
                                           useSimple);
@@ -2518,9 +2518,8 @@
        } else if(useRenderParams) {
                /* Do not use cache in render mode. */
                CCGSubSurf *ss;
-               int levels;
-               
-               levels= get_render_subsurf_level(&smd->modifier.scene->r, 
smd->renderLevels);
+               int levels= (smd->modifier.scene)? 
get_render_subsurf_level(&smd->modifier.scene->r, smd->renderLevels): 
smd->renderLevels;
+
                if(levels == 0)
                        return dm;
                
@@ -2535,7 +2534,7 @@
        } else {
                int useIncremental = (smd->flags & 
eSubsurfModifierFlag_Incremental);
                int useAging = smd->flags & eSubsurfModifierFlag_DebugIncr;
-               int levels= get_render_subsurf_level(&smd->modifier.scene->r, 
smd->levels);
+               int levels= (smd->modifier.scene)? 
get_render_subsurf_level(&smd->modifier.scene->r, smd->levels): smd->levels;
                CCGSubSurf *ss;
                
                /* It is quite possible there is a much better place to do 
this. It


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

Reply via email to