[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26263] trunk/blender/source/blender/ blenkernel/intern: Fix #20820: multires subdivide crash.

Brecht Van Lommel brecht at blender.org
Mon Jan 25 22:58:00 CET 2010


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





More information about the Bf-blender-cvs mailing list